包体优化
- 删除无用代码
- 定期清理,删除重复和未引用的资源
- 压缩音效文件,尽可能少占用空间
- 资源尽量放到
res目录
下。因为resources
目录下的每个文件都会生成一个json
,构建导出时,把资源映射关系存到Settings.js
中,导致setting.js
变大,所以,不是代码动态加载的资源,千万别放到resources目录下。另外为了防止缓存问题
,构建时通常使用md5
,此时Settings.js
文件会进一步膨胀。 - 对于图片资源,尽量让美术人员出图时就压缩好。如果使用了Creator的自动图集功能,最好在构建后用TinyPNG把这些合成大图再压缩一遍。有个问题是
Creator2.0
开始构建后文件都是uuid
命名,可以用Creator官方插件找出它们的对应关系,再用脚本分析出哪些是自动图集生成的,之后再压缩这些图即可。
性能优化
- 多个
Label
尽量相邻放在同一个节点下,可合并DrawCall
。 - 九宫格
Sprite
和艺术数字图片
即使同一层次,也不能合并DrawCall
。 -
Prefab
的性能消耗主要在cc.instaniate
和addChild
。 - 减小
节点层级
和数量
。如果是重复多次使用的节点,一定要使用对象池
,并且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.keys
或for...in
。
网友评论