MIF_E31230838/Assets/Scripts/Audio.cs

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;
}
}