using UnityEngine; [DisallowMultipleComponent] [RequireComponent(typeof(AudioSource))] public class AudioManager : Singleton { [SerializeField, Tooltip("用于播放背景音乐的 Audio Source 组件。")] private AudioSource musicSource; protected override void Awake() { base.Awake(); // 如果当前对象是重复实例,基类会将它销毁,此处不再继续初始化。 if (Instance != this) { return; } // AudioManager 与 Audio Source 位于同一对象时,可以自动取得引用。 if (musicSource == null) { musicSource = GetComponent(); } } private void Start() { if (musicSource == null) { Debug.LogError( "AudioManager:没有找到用于播放背景音乐的 Audio Source。", this); } } /// /// 控制背景音乐的暂停与继续。 /// true 表示继续,false 表示暂停。 /// public void ToggleBGMusic(bool isOn) { if (musicSource == null) { return; } if (isOn) { // UnPause 只负责继续曾经被 Pause 的音乐。 if (!musicSource.isPlaying && musicSource.clip != null) { musicSource.UnPause(); } } else { if (musicSource.isPlaying) { musicSource.Pause(); } } } }