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. 屏幕

本文详细梳理了Cocos面试的关键知识点,包括内存管理、DrawCall优化、屏幕适配、性能卡顿优化等Cocos核心技术;深入探讨了数据结构与算法、项目经验、网络基础、图形学和OpenGL、JavaScript以及ES6的相关知识。同时,涵盖了从微信小游戏到Android和iOS平台的特性和开发注意事项,最后还涉及到了职业规划和技术管理。
2831

被折叠的 条评论
为什么被折叠?



