如何让Unity 3D中的对象保留在场景中并且不会重新创建

嗨,我正在努力找到一种在Unity 3D中播放背景音乐的好方法。 我希望音乐能够通过场景加载持续播放。 不要在加载时销毁很好并且有效,但每次加载相同的场景时,它都会制作另一个音乐游戏对象,因为场景本身中有游戏对象。 我怎样才能解决我的问题? 我是一个“初学者”(有点),所以我想要我能理解的代码。 谢谢!

我建议先从像’EazySoundManagerDemo’这样的资产开始。 它需要一些重构和细化(即它使用3个音频arrays和3组可访问性函数,而不是一个带有AudioPurpose枚举的集合来增加代码重用)。

然而,它确实解决了您所遇到的基本问题,并且是使用音频管理器/层而不是直接从您的GameObjects直接播放音频的好介绍。 给它一个镜头,从中学习,然后适应它或创建自己的音频管理层。

祝好运!

我建议创建一个audioSource对象,然后为该对象创建一个脚本,并在唤醒函数上执行以下操作:

void Awake() { DontDestroyOnLoad(this.gameObject); } 

这将使背景音乐在场景之间继续播放。 有关更多信息,您可以使用Unity有关此function的文档。

在团结论坛上的一个问题的帮助下,我想我已经解决了我的问题。 这个问题的链接在这里……

https://answers.unity.com/questions/982403/how-to-not-duplicate-game-objects-on-dontdestroyon.html

最佳答案是我正在使用的答案。

代码就是这个……

 private static Player playerInstance; void Awake(){ DontDestroyInLoad(this); if (playerInstance == null) { playerInstance = this; } else { Destroy(gameObject); // Used Destroy instead of DestroyObject } }