81 lines
2.0 KiB
C#
81 lines
2.0 KiB
C#
using UnityEngine;
|
|
|
|
public class Audio : MonoBehaviour
|
|
{
|
|
// Singleton Instance
|
|
public static Audio instance;
|
|
|
|
[Header("Sumber Suara")]
|
|
public AudioSource musicSource;
|
|
public AudioSource sfxSource;
|
|
|
|
[Header("Koleksi Audio")]
|
|
public AudioClip backgroundMusicUtama;
|
|
public AudioClip backgroundMusicKuis;
|
|
public AudioClip buttonClickSFX;
|
|
|
|
void Awake()
|
|
{
|
|
// Logika "MusicAwet": Kalau udah ada Audio Manager, hancurkan yang baru.
|
|
if (instance == null)
|
|
{
|
|
instance = this;
|
|
DontDestroyOnLoad(gameObject);
|
|
}
|
|
else
|
|
{
|
|
Destroy(gameObject);
|
|
}
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
// 1. Load Status Mute/Unmute dari Ingatan HP (PlayerPrefs)
|
|
// Kalau 1 = Nyala (Mute false), Kalau 0 = Mati (Mute true)
|
|
bool isMusicOn = PlayerPrefs.GetInt("MusicState", 1) == 1;
|
|
bool isSFXOn = PlayerPrefs.GetInt("SFXState", 1) == 1;
|
|
|
|
musicSource.mute = !isMusicOn;
|
|
sfxSource.mute = !isSFXOn;
|
|
|
|
// 2. Mulai Mainkan Musik
|
|
PlayMusic(backgroundMusicUtama);
|
|
}
|
|
|
|
public void PlayMusic(AudioClip clip)
|
|
{
|
|
if (musicSource.clip == clip) return; // Kalau lagunya sama, jangan diulang
|
|
|
|
musicSource.clip = clip;
|
|
musicSource.Play();
|
|
}
|
|
|
|
public void PlayQuizMusic()
|
|
{
|
|
PlayMusic(backgroundMusicKuis);
|
|
}
|
|
|
|
public void PlayMainMusic()
|
|
{
|
|
PlayMusic(backgroundMusicUtama);
|
|
}
|
|
|
|
public void PlayButtonSound()
|
|
{
|
|
// Cek dulu apakah SFX boleh bunyi?
|
|
if (!sfxSource.mute)
|
|
{
|
|
sfxSource.PlayOneShot(buttonClickSFX);
|
|
}
|
|
}
|
|
|
|
// Fungsi Pembantu buat dipanggil dari SettingsManager
|
|
public void UpdateMuteState()
|
|
{
|
|
bool isMusicOn = PlayerPrefs.GetInt("MusicState", 1) == 1;
|
|
bool isSFXOn = PlayerPrefs.GetInt("SFXState", 1) == 1;
|
|
|
|
musicSource.mute = !isMusicOn;
|
|
sfxSource.mute = !isSFXOn;
|
|
}
|
|
} |