1.如何降低drawCall?
- drawcall:CPU准备渲染对象,将渲染对象从硬盘加载到内存,再由内存加载到闪存,设置每个对象的渲染状态,材质,纹理,着色器等,然后CPU向GPU发送DrawCall命令,并将渲染图元传递给GPU。DrawCall过多导致CPU大量计算,影响效率
- 只有相同材质的物体可以批处理,在程序中尽可的复用材质和物体。
- 如果动态物体公用相同材质,unity会自动进行批处理。
- 复杂静态场景,可以使用遮挡剔除算法。
- 打包图集。密切相关的图打包在一起,图集不要太大。
- 特效播放完毕,没有active设置为false,就会继续占用drawcall,要及时清理。
2.如何在UI上降低DrawCall?
- 尽量减少mask遮罩的使用。mask内和mask外的ui不能一次渲染,能不用就不用,或者用带通道的图片代替mask的遮罩功能
- 图集整理规范。批处理是根据图集来。常用的图片放一个图集,独立界面放一个图集等。
- ui摆放减少交叉。 img -img-text 两个drawcall image - text-image 三个drawcall
- 动静分离
- 尽量减少raycasttarget的使用
- richtext
3.手机发烫的原因?如何处理?
- cpu计算过高。
- 手机配置不行
- 后台程序多
- 运行时间长
- 信号弱,手机自动加大发射功率
4.GC工作原理,如何减少GC?
- 不要显示调用system.gc(); 会触发主GC,增加gc频率
- 减少临时对象的使用
- 字符串频繁变更使用stringbuilder
- 减少静态变量的使用