You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:06:20