自学 Cocos JS 之 资源加载的那点事
这期的内容应该更偏向于程序。
个人认为Cocos Creator对资源的加载分为两种:静态加载和动态加载。
静态加载
所谓静态加载,说白了就是直接在Creator编辑器里拖拖拉拉,给各种节点托入图片,声音,预制体(prefab),动画,脚本等资源。
优点是:
- 简单,可以直接产出
- 所见即所得
- 不需要管理资源的加载和释放,一切交给系统
缺点是:
- 不能动态更改资源
- 一旦把所有资源都预先挂在节点上,内存开销会增加
- 流程会变的复杂,如果更改(添加,删除,修改)了一个资源就要在编辑器操作一下,复杂的流程会增加出错的概率,增加定位BUG的难度
上图中脚本ConfigMgr的作用是在游戏启动的时候将所有Json配置表一次性加载到游戏中,所有Scene通用。
动态加载
所谓动态加载,就是UI布局上只留一个节点(可以有资源也可以没有资源),通过代码在需要添加/更改资源的时候加载资源。
优点是:
- 节省内存,在需要资源的时候加载对应的资源
- 定位BUG简单,直接调试就能找到问题所在
缺点是:
- 需要通过编码实现
- 不仅要处理加载,还要处理卸载
- 不能所见即所得
上图是动态加载龙骨的一个测试用例
- 新建场景,添加名为hero的空节点用来存放主角
- hero节点添加DragonBones组件
- 场景Canvas挂Player脚本
- 把hero节点拖到Player脚本中,赋值给PlayerDragonBone变量
上图就是Player.js脚本的内容
上图是浏览器中运行的效果图。
注意事项
需要动态加载的资源,
必须将资源放在assets/resources/下
必须将资源放在assets/resources/下
必须将资源放在assets/resources/下
重要的事情说三遍,我就是因为路径问题折腾了一天时间。
结语
对资源的加载一定要合理运用
就比如Player.js脚本,不应该把资源的名称写在代码里,应把资源名放在Json里,然后通过ConfigMgr.js查找对应的配置读取出来。静态读配置动态加载资源。
只有合理运用资源的静/动态加载才能实现收益的最大话。