63 lines
2.0 KiB
C#
63 lines
2.0 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class AudioManager : MonoBehaviour
|
|
{
|
|
[Header("Pengaturan Audio Source")]
|
|
[Tooltip("AudioSource khusus untuk suara efek klik (UI)")]
|
|
public AudioSource uiSource;
|
|
|
|
[Tooltip("AudioSource khusus untuk suara utama (Hewan/Buah)")]
|
|
public AudioSource animalSource;
|
|
|
|
[Header("Pengaturan Suara Efek")]
|
|
[Tooltip("Masukkan suara bubble ke sini. Hanya perlu diisi satu kali!")]
|
|
public AudioClip bubbleSound;
|
|
|
|
// Variabel untuk menyimpan proses urutan suara yang sedang berjalan
|
|
private Coroutine currentSequence;
|
|
|
|
// Fungsi ini akan dipanggil secara otomatis oleh masing-masing tombol
|
|
public void OnAnimalButtonClicked(AudioClip animalSound)
|
|
{
|
|
// 1. Hentikan urutan waktu sebelumnya jika pemain mengklik tombol lain dengan cepat
|
|
if (currentSequence != null)
|
|
{
|
|
StopCoroutine(currentSequence);
|
|
}
|
|
|
|
// 2. Hentikan suara utama sebelumnya agar tidak bertumpuk
|
|
animalSource.Stop();
|
|
|
|
// 3. Mulai urutan suara yang baru
|
|
currentSequence = StartCoroutine(PlaySoundSequence(animalSound));
|
|
}
|
|
|
|
private IEnumerator PlaySoundSequence(AudioClip animalSound)
|
|
{
|
|
// Mainkan suara efek (Bubble)
|
|
// Menggunakan PlayOneShot agar suara efek bisa beruntun jika diklik cepat
|
|
if (bubbleSound != null)
|
|
{
|
|
uiSource.PlayOneShot(bubbleSound);
|
|
}
|
|
|
|
// Tunggu jeda waktu 0.3 detik (bisa kamu sesuaikan)
|
|
yield return new WaitForSeconds(0.1f);
|
|
|
|
// Masukkan suara utama ke AudioSource lalu mainkan
|
|
if (animalSound != null)
|
|
{
|
|
animalSource.clip = animalSound;
|
|
animalSource.Play();
|
|
}
|
|
}
|
|
// Fungsi khusus untuk tombol biasa (tombol navigasi, menu, dll)
|
|
public void PlayBubbleSound()
|
|
{
|
|
if (bubbleSound != null && uiSource != null)
|
|
{
|
|
uiSource.PlayOneShot(bubbleSound);
|
|
}
|
|
}
|
|
} |