81 lines
2.2 KiB
C#
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();
|
|
}
|
|
}
|
|
} |