美文网首页
Unity UI性能优化小技巧

Unity UI性能优化小技巧

作者: 食不知味_夜不能寐 | 来源:发表于2019-02-22 14:25 被阅读24次

    一、Drawcall优化

    Text会打断合批,调整Prefab的结构时,尽量将Text放在一起。有个比较麻烦的是Button,一般来讲Button下面都会挂一个Text,直接把这种Text分离的问题在于,当我们想要将Button隐藏或显示时,对应的Text不会跟随着显隐,可以用下面的脚本来将Button和Text“绑定”:

    [ExecuteInEditMode]
    public class BindingWithText : MonoBehaviour
    {
        public Text[] _texts;
        
        private void OnEnable()
        {
            UpdateTextActive(true);
        }
    
        private void OnDisable()
        {
            UpdateTextActive(false);
        }
    
        private void UpdateTextActive(bool active)
        {
            if(_texts == null)
                return;
            for (var i = 0; i < _texts.Length; i++)
            {
                _texts[i].gameObject.SetActive(active);
            }
        }
    }
    

    如果按钮按下或抬起时有缩放动画,可以在脚本里添加Update(),更新Text的Scale。

    二、Overdraw优化

    1.九宫格图片很常用,对于某些Image,如果可以勾掉FillCenter就勾掉,比如弹窗的背板,背板如果会被弹窗内容盖住,就可以勾掉FillCenter,降低Overdraw。
    2.Text的Outline和Shadow组件会生成大量的顶点和三角片,会使Overdraw比较严重,需要多注意。

    三、不再需要注意的动静分离

    Unity 5.2之前,需要动静分离的原因是,某个UI元素出现变动(位置、颜色等)时,同一个Canvas下的所有元素都需要ReBatch(重建网格),会带来比较大的计算量导致帧率下降,因此要将动和静的元素放在不同的Canvas下。在5.2版本后,这一部分计算已经挪到了非主线程,一般情况下不会再导致帧率下降,且更多的Canvas会增加Drawcall,因此新版本不建议无脑地动静分离,要视情况而定。

    四、其他

    Text的BestFit和RichText能不用就不用。
    Text和Image的RaycastTarget默认是勾选的,不需要就勾掉。

    相关文章

      网友评论

          本文标题:Unity UI性能优化小技巧

          本文链接:https://www.haomeiwen.com/subject/bdqeyqtx.html