243 lines
7.0 KiB
C#
243 lines
7.0 KiB
C#
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);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Dipanggil saat membuka popup isi dari popup pilihan
|
|
/// </summary>
|
|
/// <param name="popupIsi">Popup isi materi yang mau ditampilkan</param>
|
|
/// <param name="popupPilihan">Popup pilihan materi yang sedang terbuka</param>
|
|
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;
|
|
}
|
|
|
|
}
|