using System.Collections; using System.Collections.Generic; using UnityEngine; public class audioController : MonoBehaviour { [Header("Audio Sources")] public AudioSource bgmSource; public AudioSource sfxSource; [Header("Audio Clips")] public AudioClip[] bgmClips; public AudioClip[] sfxClips; private Dictionary bgmDictionary; private Dictionary sfxDictionary; public static audioController Instance; private void Awake() { if (Instance == null) { Instance = this; } InitializeAudioDictionaries(); } private void InitializeAudioDictionaries() { bgmDictionary = new Dictionary(); foreach (var clip in bgmClips) { bgmDictionary[clip.name] = clip; } sfxDictionary = new Dictionary(); foreach (var clip in sfxClips) { sfxDictionary[clip.name] = clip; } } public void PlayBGM(string bgmName, float volume = 1f) { if (bgmDictionary.TryGetValue(bgmName, out AudioClip bgmClip)) { bgmSource.clip = bgmClip; bgmSource.volume = volume; bgmSource.loop = true; bgmSource.Play(); } else { Debug.LogWarning($"BGM '{bgmName}' not found!"); } } public void StopBGM() { bgmSource.Stop(); } public void PlaySFX(string sfxName, float volume = 1f) { if (sfxDictionary.TryGetValue(sfxName, out AudioClip sfxClip)) { sfxSource.PlayOneShot(sfxClip, volume); } else { Debug.LogWarning($"SFX '{sfxName}' not found!"); } } public void StopSFX() { sfxSource.Stop(); } }