一、发现问题
在使用单例模式创建了一个挂载着音效库脚本的组件(AudioManager)后,我们可以直接把其挂载在需要的组件上

但在生成后,我发现了一个问题,场景前组件声音还有效,但切换场景后,该场景挂载音效库的组件就会显示missing

二、分析问题
在网上查找了大量视频、博客后,我还是没找到解决方法。最后在同学的提示下,我发现了一个问题,虽然在编辑器中AudioManager与其他组件在一个场景,但因为使用了DontDestroyOnLoad()方法,生成后AudioManager与其他的组件其实并不在一个场景里


可能是由于生成顺序的问题,在第一个场景依旧能挂载,但进入到下一个场景后,因为不在同一个场景,其他组件都找不到AudioManager,所以会显示missing
三、解决问题
这个问题我们可以用脚本来解决,在单例脚本中,我们可以添加or修改以下代码

而在需要调用的场景中,我们可以添加以下方法来调用

这样子,问题就顺利解决了!
文章讲述了在Unity中使用单例模式的AudioManager组件时遇到的问题,即场景切换后组件显示‘missing’。作者发现这是因为AudioManager在DontDestroyOnLoad下,与场景中的其他组件不在同一生成环境中。通过脚本调整和场景中调用的方法解决了这个问题。
2114





