Unity中解决DontDestroyOnLoad的坑

一:前言

我们经常要用到DontDestroyOnLoad来使一个GameObject在切换场景的时候不被销毁
例如现在有两个场景Scene1和Scene2,在Scene1的GameManager脚本的Start方法中调用了DontDestroyOnLoad(gameObject),接着切换到Scene2,会发现GameManager对象没有被销毁,但当从Scene2切换到Scene1时,会多出一个GameManager对象,每次进入到Scenen1时都会多一个GameManager对象
这是因为每次进入到Scene1时,都会执行Start方法中的DontDestroyOnLoad方法,而之前的GameManager对象没有被释放,所以会又多出一个GameManager对象


二:解决方法一

创建一个初始化的场景,在初始化场景里面的某个游戏对象的全局脚本中,把所有游戏对象全部设置成DontDestroyOnLoad,也就是切换场景时不销毁,接着进入到第一个游戏场景,也就是说逻辑永远不会再返回初始化场景,也就不会存在来回切场景DontDestroyOnLoad没有删除的问题


三:解决方法二

判断一下引用是否为空,如果为空再设置为DontDestroyOnLoad,如果不为空则删除此游戏物体


                
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hello Bug.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值