ok,收到。
动态加载了一个动画 这个动画比如有10个子图片,如果释放了这个动画,那么这10个子图片 会是什么状态?
引擎自动处理,没有用就会跟着释放
但文档里写的是 动态加载的资源 引用计数是不做处理的,这个矛盾吗?
而且这些子图片,本身也有可能被动态加载的 这个怎么保证释放不冲突?
为什么不自己去处理呢?
给出资源引用计数接口已经是最大的支持了。
unity还要自己写一套支持这个资源引用计数呢。
不是所有都必须支持。
有些事情还是人为控制最好。
我没觉得理解有错误,文档里明确写着 动态加载的引用计数不做处理,但刚才官方又表示被引用到的图片 可以自动处理,那么到底引用计数什么规则?
意思是动态资源,引擎不会自动帮你做引用计数,但是你可以自行引用计数。自行增加引用计数的目的就是避免公共资源被其他地方释放了。
如果搞不清楚,可以简单地按照这种方式处理:
- 静态资源不要去管引用计数
- 动态资源,自行控制引用计数。粗粒度的控制就是当前场景每次动态加载的资源都做一次
addRef()并记录下来,场景销毁时,对所有记录调用decRef()。
一个资源 我认为应该把分4种情况
主动静态引用 被动静态引用
主动动态引用 被动动态引用
主动是说人为的加载这个资源本身,被动是说这个资源作为子资源被间接使用到了
那么你们分别说一下 这4种情况下,引用计数的使用规则
这里还有交叉使用的情况会,
那么就能知道,资源被引用的各种情况了,用户也就能知道什么时候用什么方式去管理引用计数了
你要看清楚,不做处理和不做特殊处理字面意思不一样!
完全可以通过addRef和delRef控制!
这些你自己完全可以这个控制脚本实现,我觉得官方没有义务去替你实现!
内存管理有一个原则:谁申请谁释放,在这里就是谁申请谁addRef,谁释放谁decRef,只要你的操作是成对的,就是 ok 的,哪怕你说的 4 种情况,不管是动态还是静态,主动和被动,交叉时就会有两个addRef啊,你第二个动画结束释放decRef,交叉的引用计数从 2 变成 1,不交叉的始终是 1,动画一没啥问题啊
在这里你就只管谁申请谁addRef,谁释放谁delRef,
回复错人了
他这不做处理的意思是resource.load完不做处理,让你手动在resource.load的complete回调里加一句addref来处理吗。
??????
无视我发错行的话吧 
一个问题,动态加载一个动画,这个动画有10个子图片,那么加载完动画后 这个动画本身和10个子图片的引用计数 各是什么情况?
动画引用计数是 0,因为没有其它资源引用(只有代码引用到了),因此用户需要手动 addRef,表示我在这个代码中引用了,这样就能防止被误释放。
子图片的引用计数是 1。
当用户不用这个动画后,decRef,引用计数就会减 1。如果没有其它模块对这个动画进行过 addRef,此时引用计数就会恢复为 0,资源就会被释放掉。

你还可以看资源的这个变量
