之前具体creator版本号我忘记了,但是之前没有这个问题,我们游戏已经上线好几个版本了
为什么onload被调用,而ondestroy就不被调用?不应该都要被调用吗?
你用的我测试的 demo 跑的?都没调用啊。
发下你的测试 demo 看看?
假如在onload里面初始化了一些数据,将释放资源的代码写在了ondestroy里面,中途把节点隐藏了,销毁节点,岂不是数据得不到释放而泄漏了?
难道不该都被调用么
我震惊了,原来不会调用的吗,如果不看源码的话,这文档有点害人啊
简单测试,2.4.3会调用
如果这个问题一直就存在,代码早就报错了,但我是更新到最新版本的creator才发现这个问题
这个本就是不调用啊,因为那个子节点都是未激活状态,它的脚本代码也就是不会自动执行代码了啊
不管是先隐藏在销毁父节点 还是直接销毁父节点 都会向上冒泡调用onDestroy
本应这样,但新版本,或者说不知从哪个版本开始,就不是这样了,不知道是故意为之还是BUG
我使用3.4.0 是正常的
我记得之前是有调用的,希望官方能给个答复
测试 demo 方便发下看看?
DestroyTest.zip (18.4 KB)
刚才做了一个例子测试一下
如果实例化prefab但没有将它放于场景中,prefab的active设置为false,prefab子节点的onLoad和onDestroy都不会被调用,
如果实例化prefab并将它放于场景中,prefab的active设置为false,prefab子节点的onLoad和onDestroy都会被调用
关键看prefab实例化后是否放于场景内。
cocos creator版本: 3.5.2
嗯,在添加进节点树时,节点如果是激活情况下是会触发,没激活是不会触发,这个目前是这样的。
这个情况测试目前还没复现,不知道漏测了什么情况,你们那边稳定复现?
若添加进节点树前active为false就不会触发,如果添加节点树前active为true,即使加入节点树后设置active为false,onLoad和onDestroy都会触发
刚才看了一下逻辑代码,之前是手动调用了onload 
这是生命周期方法,跟节点状态没关系吧,只要调用过onLoad方法,就应该走完整个生命周期,而不是走到一半不走了
所以这是正常的,不是 bug