Unity场景切换及玩家死亡时音乐重复播放问题求助
解决Unity场景切换后音乐重复播放的问题
你的代码仅实现了让音乐对象不随场景销毁,但每次回到原场景时,场景会重新生成一个新的音乐对象,新旧两个对象同时运行就会导致音乐重叠播放。
只需在代码中加入单例检查逻辑,确保始终只有一个音乐实例存在:
using UnityEngine; public class DontDestroyAudio : MonoBehaviour { private static DontDestroyAudio _instance; private void Awake() { // 检查是否已有存活的音乐实例 if (_instance != null && _instance != this) { // 若已有实例,直接销毁当前新生成的对象 Destroy(gameObject); } else { // 若没有实例,将当前对象设为单例并标记为不随场景销毁 _instance = this; DontDestroyOnLoad(gameObject); } } }
额外优化(可选)
如果需要在玩家死亡时暂停音乐、回到场景后恢复,可以给类添加控制方法:
// 暂停音乐 public void PauseMusic() { GetComponent<AudioSource>().Pause(); } // 恢复音乐播放 public void ResumeMusic() { GetComponent<AudioSource>().UnPause(); }
之后在玩家死亡逻辑里调用 DontDestroyAudio._instance.PauseMusic(),回到场景后调用恢复方法即可。
内容的提问来源于stack exchange,提问作者user14633516
相关产品推荐
相关产品推荐

