Cocos Creator 通用框架设计 —— 资源管理

Mark

硬货,mark

释放崩溃的问题前面已经说到了,是因为默认场景的资源没有通过ResLoader加载,释放的时候并不知道场景还有其它地方在用,如果你拖拽了按钮之类的通用资源,就会出现这种情况。

自动图集有什么问题?

主要是和cc.loader对比的话,可以发现cc.loader的一些资源并没有被释放掉而ResLoader释放干净了。关于内存问题,如果要感觉明显的内存变化,可以加载更多的资源来测试。

最后可以参考一下 https://docs.cocos.com/creator/manual/zh/scripting/load-assets.html

最后一个值得关注的要点:JavaScript 的垃圾回收是延迟的。

mark

mark,感谢分享

问下作者 你view管理里面继承viewbase的子类对界面进行初始化都在init 里面还是说在自己要在component的onLoad里面

mark

mark

你的button是系统自带的button,卸载了自带的资源

一般建议写在init里面,这样其实更可控一些,比如你希望传参或者在init之前确保执行某些代码。

Mark以下,慢慢看

可以pull一下最新的代码,新增了跳过当前场景资源的释放

再pull一下代码,可以看看 —— 获取场景对应的所有依赖资源的代码
其实就是 cc.director.getScene().dependAssets。

mark

mask

那么init和脚本的生命周期的执行顺序怎么确定的?比如 onload start等与init的执行顺序

mark

mask一下

hello,宝爷,你的这份资源管理和demo我研究了一波,有如下疑问:
虽说你做了资源引用计数管理,清理的时候能准确清除load过的资源,但是如果资源我只load一遍,但是其他地方使用几遍,然后再次删除,还是回到了问题原点,例如:我load一个spriteframe,然后在场景中的两个节点分别 sprite1.spriteframe = spriteframe;sprite2.spriteframe = spriteframe,使用完了之后,在移除sprite1时,我调用清除,把资源干掉了,会影响sprite2,这个咋处理额?因为sprite2使用现成的已加载过的资源,跳过了load引用计数标记额…

如果load同一张资源多次,分别使用,然后relase,会报错,原理如同1一样,不可能load同一张资源,还各种精确的makeUseKey, 然后release时也传入对应的makeUseKey吧?再说了一个项目中各种资源一般只会加载一次,肯定会重复多方向使用的,特别是合并图集drawcall等优化性能的时候,我不相信大多数人没遇到

求大佬解惑指点下思路?