Cocos备战面试

操作系统
js
ts
es6
前端
面向对象
性能优化

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)尽量放到节点后面以避免打断合批

3. 屏幕适配

设计分辨率一般

你可能感兴趣的:(游戏)