Unity中DontDestroyOnLoad()的一个坑

今天在做场景切换时偶然发现了DontDestroyOnLoad()的一个问题,研究了好久,不知道是不是Unity的Bug,下面我演示一下这个问题…
首先我在场景1里面创建了一个Cube1和Cube2,还有切换场景的按钮
注:左边是Cube1,右边是Cube2
在这里插入图片描述
我在Cube1上挂了一个脚本,我让Cube1在切换场景的时候不被销毁,然后在场景中找到Cube2,把Cube1的父物体设置成Cube2,再把Cube1的父物体设置为空(注意这里)。 Cube1中代码逻辑如下:
在这里插入图片描述
在这里插入图片描述
切换场景按钮里面有如下逻辑:点击按钮切换至场景2
在这里插入图片描述
然后我再创建一个场景2:
在这里插入图片描述
重点来了,这个时候运行场景1,在场景1点击切换至场景2,神奇的事情发生了,原本设置了切换场景时不被自动销毁的Cube1,居然神奇地在Hierarchy栏里面消失了!,选中物体也无法在Hierarchy栏里面显示
在这里插入图片描述
但是Cube1中的Update还在执行,说明Cube1没有被销毁,但是却在Hierarchy栏里面神奇地消失了。
在这里插入图片描述

结论:游戏运行后,Cube1(切换场景时不会自动销毁的物体)把父物体设置为Cube2(切换场景时会自动销毁的物体)后,再把Cube1的父物体设置空,这个时候切换至场景2,Cube1和Cube2都会在Hierarchy栏中消失,但是Cube1在游戏场景中依然存在,并且生命周期函数也在正常运行。

不知道这个是不是Unity的Bug,如果有大佬发现这是我个人的操作问题,也请提醒我一下。

发布了1 篇原创文章 · 获赞 4 · 访问量 251

猜你喜欢

转载自blog.csdn.net/u013739394/article/details/105127104