我需要更新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