using UnityEngine; using UnityEngine.SceneManagement; public class BackButtonManager : MonoBehaviour { //[Header("Popup konfirmasi keluar (Main Menu)")] //public GameObject popupKeluar; //[Header("Popup lain yang ada di scene")] //public GameObject[] popupsLain; //[Header("Nama scene Main Menu")] //public string namaSceneMainMenu = "MainMenu"; // ganti sesuai nama scene main menu kamu //[Header("Nama scene tujuan kembali dari dalam game")] //public string namaSceneSebelumnya = "MainMenu"; // ganti sesuai scene yang mau kamu kembali di dalam game //void Update() //{ // if (Input.GetKeyDown(KeyCode.Escape)) // { // string currentScene = SceneManager.GetActiveScene().name; // // Tutup popup lain dulu kalau ada yang aktif // foreach (GameObject popup in popupsLain) // { // if (popup != null && popup.activeSelf) // { // popup.SetActive(false); // return; // stop, jangan lanjut // } // } // if (currentScene == namaSceneMainMenu) // { // // Di Main Menu muncul popup keluar game // if (popupKeluar != null && !popupKeluar.activeSelf) // { // popupKeluar.SetActive(true); // } // } // else // { // // Di dalam game langsung load scene sebelumnya (bisa main menu atau scene lain) // SceneManager.LoadScene(namaSceneSebelumnya); // } // } // if (Input.GetKeyDown(KeyCode.Escape)) // { // Debug.Log("Tombol Escape ditekan"); // // kode lain... // } //} //public void KeluarGame() //{ // Application.Quit(); //} //public void BatalKeluar() //{ // if (popupKeluar != null) // popupKeluar.SetActive(false); //} //[Header("Popup Lain (semua selain kelas, termasuk materi, info, dll)")] //public GameObject[] popupLain; //[Header("Popup Keluar Game (khusus scene Main Menu)")] //public GameObject popupKeluar; //[Header("Nama Scene Main Menu")] //public string namaSceneMainMenu = "MainMenu"; //[Header("Nama Scene Sebelumnya (untuk kembali jika bukan Main Menu)")] //public string namaSceneSebelumnya = "MainMenu"; //void Update() //{ // if (Input.GetKeyDown(KeyCode.Escape)) // { // string currentScene = SceneManager.GetActiveScene().name; // bool popupTertutup = false; // // Tutup semua popup lain yang aktif // if (popupLain != null) // { // foreach (GameObject popup in popupLain) // { // if (popup != null && popup.activeSelf) // { // popup.SetActive(false); // popupTertutup = true; // } // } // } // // Jika ada popup yang baru saja ditutup, jangan lanjut // if (popupTertutup) return; // // Kalau di Main Menu, tampilkan popup keluar // if (currentScene == namaSceneMainMenu) // { // if (popupKeluar != null && !popupKeluar.activeSelf) // { // popupKeluar.SetActive(true); // return; // } // } // // Kalau tidak di Main Menu, kembali ke scene sebelumnya // SceneManager.LoadScene(namaSceneSebelumnya); // } //} //public void KeluarGame() //{ // Debug.Log("Keluar dari game..."); // Application.Quit(); //} //public void BatalKeluar() //{ // if (popupKeluar != null) // { // popupKeluar.SetActive(false); // } //} [Header("Semua popup (baik pilihan maupun isi)")] public GameObject[] popupLain; [Header("Popup Keluar Game (khusus di Main Menu)")] public GameObject popupKeluar; [Header("Nama Scene Main Menu")] public string namaSceneMainMenu = "MainMenu"; [Header("Nama Scene Sebelumnya (kalau bukan Main Menu)")] public string namaSceneSebelumnya = "MainMenu"; // Menyimpan popup pilihan dan isi materi terakhir yang dibuka private GameObject popupPilihanTerakhir; private GameObject popupIsiTerakhir; void Update() { if (Input.GetKeyDown(KeyCode.Escape)) { string currentScene = SceneManager.GetActiveScene().name; bool popupTertutup = false; // Cek dan tutup popup yang sedang aktif if (popupLain != null) { // Tutup hanya satu popup aktif paling atas for (int i = popupLain.Length - 1; i >= 0; i--) // Mulai dari yang terakhir { GameObject popup = popupLain[i]; if (popup != null && popup.activeSelf) { popup.SetActive(false); popupTertutup = true; if (popup == popupIsiTerakhir && popupPilihanTerakhir != null) { popupPilihanTerakhir.SetActive(true); } // Stop proses Escape setelah menutup satu popup return; } } } // Jika ada popup yang ditutup, jangan lanjut ke scene if (popupTertutup) return; // Kalau sedang di Main Menu, tampilkan popup keluar if (currentScene == namaSceneMainMenu) { if (popupKeluar != null && !popupKeluar.activeSelf) { popupKeluar.SetActive(true); return; } } // Kalau bukan di Main Menu, kembali ke scene sebelumnya SceneManager.LoadScene(namaSceneSebelumnya); } } /// /// Dipanggil saat membuka popup isi dari popup pilihan /// /// Popup isi materi yang mau ditampilkan /// Popup pilihan materi yang sedang terbuka public void BukaIsiMateri(GameObject popupIsi, GameObject popupPilihan) { popupPilihanTerakhir = popupPilihan; popupIsiTerakhir = popupIsi; if (popupPilihan != null) popupPilihan.SetActive(false); if (popupIsi != null) popupIsi.SetActive(true); } // Tombol "Keluar Game" public void KeluarGame() { Debug.Log("Keluar dari game..."); Application.Quit(); } // Tombol "Batal Keluar" public void BatalKeluar() { if (popupKeluar != null) { popupKeluar.SetActive(false); } } public bool AdaPopupAktif() { foreach (GameObject popup in popupLain) { if (popup != null && popup.activeSelf) return true; } return false; } }