Cocos相关
1. 内存管理
引用计数来管理内存,创建时计数为1,调用retain计数加1,release计数减1,为0时释放内存。
常见的addChild和removeChild会分别加1减1。autoRelease把节点加到自动释放池中,
在当前帧结束时,池中的节点会调用一次release,起到延时自动释放的作用。
2. DrawCall优化
DrawCall 是一种行为(指令),即 CPU 调用图形 API,命令 GPU 进行图形绘制。
由于 DrawCall 带来的 CPU 及 GPU 的渲染状态切换消耗,往往需要通过批次合并来降低 DrawCall的调用次数。
引擎默认会自动合批,但需要保证相邻的渲染状态相同,减少DrawCall主要方式就是避免打断合批的情况,包括
1. 纹理状态:相邻渲染(节点)使用的图片不是同一张
2. 混合模式不一样
3. 模板状态不一样(裁剪)
针对这些情况,优化方案就有
1. 使用静态合图,图集或自动图集,相邻节点用的图打包到同一张图里
2. 尽量少修改混合模式
3. 文字开启动态合图,文字实际上是用字体文件生成的图片数据,把它和静态的图片一起在内存中合成一张图。
4. 动态变化的文字使用fnt字体
5. ScrollView和其他用了模板的组件(Mask)尽量放到节点后面以避免打断合批