一.天空盒没有必要的话不要显示
如图,一个空场景的定点和三角面都大几千,如果是2d游戏或者用不到天空盒,在MainCamera把ClearFlags换成其他合适的模式
去掉天空盒的无谓开销后属性如下
二.动静分离
这个我了解的方法一般是用新增canvas做
方法一 在当前canvas平级路径新增一个canvas , 有需要动态会导致ui重建的元素就放到新增canvas中,动完再放回来。
这个缺点是显示层级处理起来可能比较麻烦,我没用过。
方法二 这个是我项目中采用的方法,在会导致ui重建的元素上添加canvas组件。优点是方便,缺点是你可能有很多地方需要用,但是创建大量canvas的话,据说性能开销反而不太好,之前看到有帖子上说全局尽量不要超过3-4个canvas,不求甚解未验证。
添加canvas组件的物体,如果需要触发事件,需要添加GraphicRaycaster组件才能正确监听事件
三.批处理 FrameDebugger
unity内置的工具,可以显示当前场景合批的元素和打断合批的元素,很方便找到drawcall激增的元凶