using UnityEngine; using System.Collections; using UnityEngine.SceneManagement; public class ManagerSuaraPilih : MonoBehaviour { [Header("--- SPEAKER UTAMA ---")] public AudioSource speakerUtama; [Header("--- PENGATURAN WAKTU ---")] public float waktuTungguSapaan = 1.0f; [Header("--- PENGATURAN PINDAH SCENE ---")] public string namaSceneBermain = "GamePilihan"; // GANTI SESUAI NAMA SCENE BOS [Header("--- SUARA KLIK UMUM ---")] public AudioClip kasetKlikUmum; [Header("--- PANEL 1: PILIH MODE ---")] public AudioClip sapaanAwalMode; public AudioClip kasetKlikBelajar; public AudioClip kasetKlikBermain; [Header("--- PANEL 2: PILIH MATERI ---")] public AudioClip sapaanPilihMateri; public AudioClip kasetMateriEkosistem; public AudioClip kasetMateriAbiotikBiotik; public AudioClip kasetMateriSimbiosis; void Start() { StartCoroutine(JedaSapaanAwal()); } IEnumerator JedaSapaanAwal() { yield return new WaitForSeconds(waktuTungguSapaan); if (speakerUtama != null && sapaanAwalMode != null) { speakerUtama.PlayOneShot(sapaanAwalMode); } } public void TombolKlikUmum() { if (speakerUtama != null && kasetKlikUmum != null) speakerUtama.PlayOneShot(kasetKlikUmum); } public void TombolBelajar() { PutarSuara(kasetKlikBelajar); StartCoroutine(JedaSuaraMateri()); } // ===================================== // TOMBOL BERMAIN (PINDAH SCENE INSTAN) // ===================================== public void TombolBermain() { // 1. Putar suara pakai jurus abadi biar ngikut pindah scene PutarSuaraAbadi(kasetKlikBermain); // 2. Langsung sikat pindah scene tanpa nunggu! SceneManager.LoadScene(namaSceneBermain); } // ===================================== // JURUS SAKTI: SPEAKER GAIB ABADI // ===================================== private void PutarSuaraAbadi(AudioClip kaset) { if (kaset == null) return; // Bikin objek speaker gaib baru khusus muter suara ini GameObject speakerGaib = new GameObject("SpeakerGaib_" + kaset.name); AudioSource sumberSuara = speakerGaib.AddComponent(); sumberSuara.clip = kaset; sumberSuara.Play(); // Jadikan ABADI biar suaranya ikut nyebrang ke scene sebelah DontDestroyOnLoad(speakerGaib); // Hancurkan otomatis kalau suaranya udah beres durasinya Destroy(speakerGaib, kaset.length); } // ===================================== // FUNGSI UNTUK TOMBOL DI PANEL 2 // ===================================== public void TombolEkosistem() { PutarSuara(kasetMateriEkosistem); } public void TombolAbiotikBiotik() { PutarSuara(kasetMateriAbiotikBiotik); } public void TombolSimbiosis() { PutarSuara(kasetMateriSimbiosis); } private void PutarSuara(AudioClip kaset) { if (speakerUtama != null && kaset != null) { speakerUtama.Stop(); speakerUtama.PlayOneShot(kaset); } } IEnumerator JedaSuaraMateri() { yield return new WaitForSeconds(1.0f); if (speakerUtama != null && sapaanPilihMateri != null) { speakerUtama.PlayOneShot(sapaanPilihMateri); } } // ===================================== // TAMBAHAN BARU: REM DARURAT (PANGGIL DI TOMBOL KEMBALI) // ===================================== public void HentikanSuara() { // 1. Batalkan semua hitungan mundur (biar suara "Pilih materi" batal muncul) StopAllCoroutines(); // 2. Matikan suara yang sedang ngoceh di speaker utama if (speakerUtama != null) { speakerUtama.Stop(); } } }