using UnityEngine; using System.Collections; public class ManagerSuaraBermain : MonoBehaviour { [Header("--- SPEAKER UTAMA ---")] public AudioSource speakerUtama; // Variabel static ini kunci ingatannya bos public static bool sudahPernahMenyapa = false; [Header("--- PENGATURAN WAKTU ---")] public float waktuTungguSapaan = 1.0f; [Header("--- SUARA SAPAAN AWAL ---")] public AudioClip sapaanPilihGame; [Header("--- SUARA KLIK UMUM ---")] public AudioClip kasetKlikUmum; void Start() { // Narator cuma bunyi kalau belum pernah nyapa di sesi ini if (!sudahPernahMenyapa) { StartCoroutine(JedaSapaanAwal()); sudahPernahMenyapa = true; } } IEnumerator JedaSapaanAwal() { yield return new WaitForSeconds(waktuTungguSapaan); if (speakerUtama != null && sapaanPilihGame != null) { speakerUtama.PlayOneShot(sapaanPilihGame); } } // ========================================== // FUNGSI BARU: MATIKAN SUARA MENU SECARA PAKSA // ========================================== public void HentikanPaksaSuara() { StopAllCoroutines(); if (speakerUtama != null) { speakerUtama.Stop(); } } // ========================================== // MODIFIKASI: RESET SAAT KEMBALI KE MENU PILIH // ========================================== public void TombolKlikUmum() { if (speakerUtama != null && kasetKlikUmum != null) { speakerUtama.PlayOneShot(kasetKlikUmum); } // --- JURUS RESET BOS --- // Kalau bos pencet tombol ini buat balik ke Scene Pilih Level, // kita set jadi false lagi biar nanti pas masuk ke scene bermain dia nyapa lagi. sudahPernahMenyapa = false; } public void PutarSuaraStage(AudioClip kaset) { if (kaset == null) return; GameObject speakerGaib = new GameObject("SpeakerGaib_" + kaset.name); AudioSource sumberSuara = speakerGaib.AddComponent(); sumberSuara.clip = kaset; sumberSuara.Play(); DontDestroyOnLoad(speakerGaib); Destroy(speakerGaib, kaset.length); } }