Ekosistem_Game/Assets/Script/SuaraHomeScreen.cs

81 lines
2.2 KiB
C#

using UnityEngine;
using System.Collections;
public class SuaraHomeScreen : MonoBehaviour
{
[Header("=== DUA SPEAKER SAJA ===")]
public AudioSource speakerNarator;
public AudioSource speakerSFX;
[Header("=== KASET SUARA ===")]
public AudioClip kasetNarator;
public AudioClip kasetKlik;
[Header("=== PENGATURAN WAKTU ===")]
[Tooltip("Berapa detik narator harus nunggu sebelum ngomong?")]
public float waktuTungguNarator = 1.5f;
// ==========================================
// INI GEMBOKNYA (Biar gak bocor)
// ==========================================
private bool bolehBunyi = true;
void Start()
{
// Pastikan gembok terbuka setiap kali layar ini pertama kali muncul
bolehBunyi = true;
// Panggil sistem jeda saat layar pertama dibuka
StartCoroutine(JedaPutarNarator());
}
IEnumerator JedaPutarNarator()
{
// 1. Tunggu dulu sesuai angka detik yang bos atur
yield return new WaitForSeconds(waktuTungguNarator);
// 2. CEK GEMBOK: Kalau layarnya masih aktif (belum dipencet kembali), baru ngomong
if (bolehBunyi == true)
{
PutarNarator();
}
}
public void BunyiKlik()
{
if (speakerSFX != null && kasetKlik != null) speakerSFX.PlayOneShot(kasetKlik);
}
public void PutarNarator()
{
if (speakerNarator != null && kasetNarator != null) speakerNarator.PlayOneShot(kasetNarator);
}
public void TombolMuteMusik()
{
if (MusikAbadi.instance != null)
{
MusikAbadi.instance.MuteMusik();
}
BunyiKlik();
}
// ==========================================
// FUNGSI UNTUK TOMBOL PINDAH / KEMBALI
// ==========================================
public void HentikanSuara()
{
// 1. Langsung gembok (biar kalau hitungan 1.5 detik habis, dia batal ngomong)
bolehBunyi = false;
// 2. Batalkan paksa sistem jeda
StopAllCoroutines();
// 3. Matikan suara yang sudah terlanjur ngoceh
if (speakerNarator != null)
{
speakerNarator.Stop();
}
}
}