开发平台:Unity 编程平台:Visual Studio 2020以上 使用语言:C#
问题描述备注:这是一个 Warnig + Normal 的警告组合消息。即时实际运行过程中达到效果,也仍需要注意这个问题的警告信息。
原因分析 Unity 中 DontDestroyOnLoad()
用于场景发生变换时,保留该场景内特定对象至下一场景继续延用。对 非父对象(子对象)由于其本身不为根父对象,须解决父子层级关系后才可有效执行。而在一些情况中,例如 Scene 下根对象中,理论上使用 DontDestroyOnLoad(this.gameObject)
并不会违背 Unity 的解释。但仍然出现该类问题。
猜想(待验证):是否存在一个父对象未出现于 Scene 视图中。
解决方案:使用 transform.root 替代public void Start()
{
DontDesctroyOnLoad(this.gameObject.root);
}
this.gameObject.root
:返回该 GameObject 对象的最顶层级对象,如果没有则返回自身。绝不为 NULL。