跳至正文

CocosCreator开发笔记(25)-一些优化总结

  • Cocos

包体优化

  • 删除无用代码
  • 定期清理,删除重复和未引用的资源
  • 压缩音效文件,尽可能少占用空间
  • 资源尽量放到res目录下。因为resources目录下的每个文件都会生成一个json,构建导出时,把资源映射关系存到Settings.js中,导致setting.js变大,所以,不是代码动态加载的资源,千万别放到resources目录下。另外为了防止缓存问题,构建时通常使用md5,此时Settings.js文件会进一步膨胀。
  • 对于图片资源,尽量让美术人员出图时就压缩好。如果使用了Creator的自动图集功能,最好在构建后用TinyPNG把这些合成大图再压缩一遍。有个问题是Creator2.0开始构建后文件都是uuid命名,可以用Creator官方插件找出它们的对应关系,再用脚本分析出哪些是自动图集生成的,之后再压缩这些图即可。

性能优化

  • 多个Label尽量相邻放在同一个节点下,可合并DrawCall。
  • 九宫格Sprite和艺术数字图片即使同一层次,也不能合并DrawCall。
  • Prefab的性能消耗主要在cc.instaniateaddChild
  • 减小节点层级和数量。如果是重复多次使用的节点,一定要使用对象池,并且Prefab记得勾选“优化多次创建性能”这个选项

WKWebView

iOS开放了WKWebView,具有一定的JIT支持,有助于提升游戏性能,如果游戏需要打包成h5版本接入到App,推荐App的iOS版本使用WKWebView。

jsc

CocosCreator构建安卓App时,会把js代码加密压缩为jsc文件(可通过选项配置),App运行时引擎执行解压解密,然后调用SpiderMonkey的虚拟环境接口运行js代码。

节点属性

  • 假设每个组件的初始化都在onload完成,当一个节点的初始化依赖于另一个节点的属性时,就有可能出现异常,因为有可能另一个节点还没有执行onload。而start是所有组件的onload都执行完了才会执行,这时无论获取哪个节点的属性都不会有问题,因为那个节点已经初始化完成了。所以节点的UI初始化最好放在start中。
  • CocosCreator编辑器中变量绑定的节点,其实对应的是该节点所在的脚本对象,但脚本对象总会有个Node成员指向该节点,其它非Node类的组件都放在Node下的组件列表里。
  • CocosCreator脚本中Properties变量名称前加 _ 下划线,代表该属性在编辑器不可见。
  • 测试发现,Scale和Size属性虽然互相独立,但运行时修改Scale会影响Size的值。

资源目录分类

  • 构建后的res目录里面,有import、raw-assets、raw-internal共3个文件夹。
  • import:这个文件夹里有一些奇怪的目录,放着长文件名的json文件,是游戏场景,预制体,图片信息的配置文件;
  • raw-assets:存放游戏的图片、声音文件;
  • raw-internal:存放游戏默认的图片、粒子资源;

loadScene

cc.loader.loadScene是个异步调用,执行顺序是:loadScene -> Scene的onLoad -> loadScene的回调 -> Scene的Start。

Animation回调

  • stop: 动画停止播放时,一般需求用这个就可以。
  • finished: 整个节点所有动画播放完成才会触发。

JavaScript语法

  • 访问对象属性有2种方法,一是点运算符,一是[]运算符。
  • 如果属性名有小数点,不能用点运算符。
  • 用[]访问属性名必须加引号,如果属性名是数字,可以不加引号;
  • 遍历对象属性,可以用Object.keysfor...in
标签:

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注