【解决吧】DontDestroyOnLoad only works for root GameObjects or components on root GameObjects.

开发平台:Unity
编程平台:Visual Studio 2020以上
使用语言:C#

问题描述


|原译|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|
|--|--|
|现译|XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX|

备注:这是一个 Warnig + Normal 的警告组合消息。即时实际运行过程中达到效果,也仍需要注意这个问题的警告信息。

原因分析


  Unity 中 DontDestroyOnLoad() 用于场景发生变换时,保留该场景内特定对象至下一场景继续延用。对 非父对象(子对象)由于其本身不为根父对象,须解决父子层级关系后才可有效执行。而在一些情况中,例如 Scene 下根对象中,理论上使用 DontDestroyOnLoad(this.gameObject) 并不会违背 Unity 的解释。但仍然出现该类问题。

猜想(待验证):是否存在一个父对象未出现于 Scene 视图中。

解决方案:使用 transform.root 替代


public void Start()
{
	DontDesctroyOnLoad(this.gameObject.root);
}

  this.gameObject.root:返回该 GameObject 对象的最顶层级对象,如果没有则返回自身。绝不为 NULL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值