更改场景时访问AudioSource对象



我需要更新MusicScript对象的AudioSource.volume。关于MusicScript类的Awake方法,我有:

void Awake()
{
GameObject[] objs = GameObject.FindGameObjectsWithTag("music");
if (objs.Length > 1)
{
Destroy(this.gameObject);
}
DontDestroyOnLoad(this.gameObject);
}

但在切换场景时,musicScript.audioSource会被破坏。如何保留musicScript.audioSource对象?

谢谢。

我在这里没有看到完整的audioSource参考。是附在游戏对象上的AudioSource对象标记为";音乐";?是";musicScript";实例也附加到用";音乐";?

我的方法是使用singleton方法。只需确保你想在场景之间保持的游戏对象同时连接了musicScript和AudioSource组件。然后将此代码添加到你的musicScript:

private void Awake()
{
// if the singleton hasn't been initialized yet
if (instance != null && instance != this)
{
Destroy(this.gameObject);
return;//Avoid doing anything else
}

instance = this;
DontDestroyOnLoad(this.gameObject);
}

其中";实例";应该是musicManager类型的变量。

来源:https://answers.unity.com/questions/891380/unity-c-singleton.html

最新更新