3.4.2 prefab依赖导致引用计数不能为0的情况

步骤:
1、在scene上创建一个控件节点VTestComp,并把节点拖动资源管理器上
image

2、在scene上创建一个节点VTest1,并把VTestComp控件拖到VTest1上,然后在VTestComp上再添加一个Sprite,最后把节点拖到资源管理器上
image

3、在scene上创建一个节点VTest2,并把VTestComp控件拖到VTest2上,然后在VTestComp上再添加一个Sprite,最后把节点拖到资源管理器上。从资源管理上直接打开VTest2这个Prefab文件,删除Sprite-001,然后又把Sprite添加回去
image

通过resouces.load分别加载VTest1,VTest2这两个Prefab,发现VTest2的引用计数是1,VTest1的引用计数是0的情况
image
image

image
image
对比发现,步骤3的操作会导致VTest2自己依赖自己


setProperties 这里会把引用计数再加一

所以导致这个Prefab的引用计数永远大于0

test.rar (3.9 KB)


问题在这跟进

这个问题还是挺严重的,基本上已经是内存泄露了。

尝试了下,在load回调时,把prefab的引用计算减一,不过会引起一些奇怪的多次释放问题。