public class AudioManager : MonoBehaviour {
//[SerializeField] //private AudioClip[] audios; private Dictionary<string, AudioClip> audios;
[SerializeField] private AudioClip audioBg;
[SerializeField] private AudioSource BgAudioSource;
[SerializeField] private AudioSource NormalAudioSource;
public static AudioManager Instance { get; protected set; }
private void Awake() { Instance = this; audios = new Dictionary<string, AudioClip>(); AudioClip[] audioArray = Resources.LoadAll<AudioClip>("Audio");//声音路径 foreach (AudioClip item in audioArray) { audios.Add(item.name, item); } }
public void PlayBgSource(string soundName) { if (audios.ContainsKey(soundName)) { PlaySound(BgAudioSource, audios[soundName], 0.5f, true);
} }
public void PlayNormalSource(string soundName) { if (audios.ContainsKey(soundName)) { PlaySound(NormalAudioSource, audios[soundName], 1f, false);
} }
private void PlaySound(AudioSource audioSource, AudioClip clip, float volum, bool loop = false) { audioSource.clip = clip; audioSource.volume = volum; audioSource.loop = loop; audioSource.Play(); }
public float GetAudioTime(Transform _obj) { float result = ((Component)_obj).GetComponent<AudioSource>().clip.length + 0.2f; if ((Object)((Component)_obj).GetComponent<AudioSource>() == (Object)null) { return 0f; } return result; }
public float GetAudioTime() { return this.NormalAudioSource.clip.length + 0.2f; } private void OnDestroy() { audios.Clear(); } }