80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using Assets.Resources.Scripts.Constants;
 | |
| using UnityEngine;
 | |
| using UnityEngine.SceneManagement;
 | |
| 
 | |
| public class BackButtonHandler : MonoBehaviour
 | |
| {
 | |
|     private bool isExitPromptVisible = false;
 | |
|     public GameObject exitPromptUI; // Una referencia a un panel de UI para confirmar la salida
 | |
| 
 | |
|     void Start()
 | |
|     {
 | |
|         if (exitPromptUI != null)
 | |
|         {
 | |
|             exitPromptUI.SetActive(false);  // Desactivar el panel al inicio
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // Update is called once per frame
 | |
|     void Update()
 | |
|     {
 | |
|         // Detecta si el botón "back" es presionado
 | |
|         if (Input.GetKeyDown(KeyCode.Escape))
 | |
|         {
 | |
|             HandleBackButton();
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // Método que maneja la lógica del botón "back"
 | |
|     void HandleBackButton()
 | |
|     {
 | |
|         string currentScene = SceneManager.GetActiveScene().name;
 | |
| 
 | |
|         if (currentScene == ScreenNames.AR)
 | |
|         {
 | |
|             // Si estamos en la escena AR, cargar la escena principal
 | |
|             SceneManager.LoadScene(ScreenNames.Main);
 | |
|         }
 | |
|         else if (currentScene == ScreenNames.Main)
 | |
|         {
 | |
|             // Si ya estamos en la escena principal, preguntar si quiere salir
 | |
|             if (isExitPromptVisible)
 | |
|             {
 | |
|                 // Si el cuadro de confirmación ya está visible, salir de la aplicación
 | |
|                 Application.Quit();
 | |
|             }
 | |
|             else
 | |
|             {
 | |
|                 // Mostrar el cuadro de confirmación para salir
 | |
|                 ShowExitPrompt();
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // Mostrar el cuadro de confirmación para salir
 | |
|     private void ShowExitPrompt()
 | |
|     {
 | |
|         isExitPromptVisible = true;
 | |
|         if (exitPromptUI != null)
 | |
|         {
 | |
|             exitPromptUI.SetActive(true);  // Mostrar el panel de confirmación
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     // Llamar a este método si el usuario confirma la salida
 | |
|     public void ConfirmExit()
 | |
|     {
 | |
|         Application.Quit();
 | |
|     }
 | |
| 
 | |
|     // Llamar a este método si el usuario cancela la salida
 | |
|     public void CancelExit()
 | |
|     {
 | |
|         isExitPromptVisible = false;
 | |
|         if (exitPromptUI != null)
 | |
|         {
 | |
|             exitPromptUI.SetActive(false); // Ocultar el panel de confirmación
 | |
|         }
 | |
|     }
 | |
| }
 | 
