127 lines
3.8 KiB
C#
127 lines
3.8 KiB
C#
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<AudioSource>();
|
|
|
|
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();
|
|
}
|
|
}
|
|
} |