Laya小游戏优化总结
在使用Laya引擎开发项目的时候根据官网的教程总结的一些优化经验。(持续更新)
-
文本
静态显示文本Text组件的性能是最好的,所以,在项目开发时,能用Text尽可能要用Text组件。当Text组件不满足的时候再用Label。
this.text.text=“原text文本”;
this.text.changeText(“替换的text文本”);对于无需改变内容的静态文本,当文本组件节点较多时,我们可以开启cacheAs,设置normal可以优化节点数,设置bitmap可以优化DrawCall数。
而当文本内容需要改变时,哪怕只改变一个字符,如果FillText可以满足需求的话,那尽可能优先使用FillText文本组件。FillText不能满足时,其次考虑位图文本组件是否可以满足,最后再考虑静态文本组件。
注意: 在2D的UI布局时,如果开发者将文本与其它UI节点混合排列,那么必然会打断图集的合并渲染,增加DrawCall数量,产生不必要的性能开销。所以,有两个方案来优化
(1)LayaAir IDE编辑布局时,将所有文本组件在节点中顺序排列,不要与其它UI组件穿插。
(2)LayaAir IDE中的组件中有一个drawCallOptimize属性,我们为所有文本的父级节点drawCallOptimize属性设置true值。当这样设置之后,引擎会自动启用文本合并优化,将所有的文本提取到最上层,而开发者无需再刻意调整图集资源和文本的排序,即可实现drawCall自动优化的目标,而且优化的更加干脆彻底。(需要提醒的是,drawCallOptimize优化方案由于会自动将文本提升显示层级,不适用于必须要将文本半遮挡的特殊需求。当然,绝大多数情况下文本是要处于全文显示的,如果有全隐藏的情况,可以直接设置隐藏属性。所以,建议开发者开启该优化方案。)
2、图片
对复杂静态内容(父物体设置即可)设置cacheAs(一是减少节点遍历和顶点计算;二是减少drawCall),能大量减少DrawCall,使用好cacheAs是游戏优化的关键。
尽量保证同图集的图片渲染顺序是挨着的,如果不同图集交叉渲染,会增加DrawCall数量。
尽量保证同一个面板中的所有资源用一个图集,这样能减少提交批次。
注意:对象非常简单,比如一个字或者一个图片,设置cacheAs=”bitmap”不但不提高性能,反而会损失性能。