unity3d 切换场景不销毁对象池中的物体方案

本文探讨了在Unity3D中如何处理对象池中的对象在场景切换时不被销毁的问题。通过DontDestroyOnLoad方法可以避免对象销毁,但会带来重复创建和父子层级混乱的问题。解决方案包括按层创建独立的非销毁对象,以及在场景切换前后处理事件和对象状态,确保对象池的正确管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         要在手机上玩转u3d,一定会做的一个就是对象池,在这里我不打算讨论对象池本身,基本思路大同小异。我这里想讨论的是切换场景引发的对象池中对象的问题。

        首先如果你什么都不处理,那么一旦你切换场景,你会发现你对象池中所有GameObject本身或者变量全部都变成了null。你下次使用这个对象就会抛出指针异常,所以你肯定会去研究怎么切场景不销毁,ok,你马上就能找到DontDestroyOnLoad方法,只要声明之后,这个物体就不会被销毁。

       然后你发现有那么多对象都需要声明,会很麻烦,所以你可以新建一个物体,挂上不销毁的脚本,然后把不需要销毁的物体全部放到它里面,那么所有的物体切换场景就不会销毁了。

      然后这样做的第一个问题,就是重复加载同样的场景,你会发现这个不销毁的新建的总物体每次都多复制了一个。因为上一次的保存下来,而这一次的还在,这个也不难解决,你可以直接判断场景中是否已经有这个物体,如果有就添加,没有就不用添加了,当然你可以参考雨凇MOMO的做法:http://www.xuanyusong.com/archives/2938(他说他的做法更好。。。虽然我觉得没有他说的那么夸张)

     接下来似乎不会有什么问题,但其实如果你真的在项目中这么做,你会发现还有很大的两个问题。

     1.我们放对

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yxriyin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值