Unity_UGUI_优化_Vanson

简述几点有关U3D的UGUI优化点。

 

(以下词汇与理解纯属个人的了解)

DrawCall

尽量避免贴图重叠。如果实在无法避免,可以考虑将当前的UI截屏添加到一个renderer texture,并将UI隐藏或设置透明度。可以避免DrawCall的值增加。

TEXT组件尽量不使用Beat fit。因为Unity是将当前字体以及所涉及到的文字打包成一个文字集(类似图集),如果勾选了Beat fit,打包后的文字集就会非常大,而且使用时会剧增DrawCall的值。

ScrollView组件里面的子节点使用对象池进行滑动时的替换更新。减少节点个数也就相当于减少了图片、文字的个数,DrawCall也从而降低。(暂无实例脚本,后续更新则重发该文)

空白处点击事件处理。使用继承点击事件的脚本替代节点点击事件。(脚本如下)

public class Empty4Raycast : MaskableGraphic
{
		protected Empty4Raycast()
		{
			useLegacyMeshGeneration = false;
		}
 
		protected override void OnPopulateMesh(VertexHelper toFill)
		{
			toFill.Clear();
		}
}

 

OverDraw

九宫格贴图去掉fiil center选项。

 

Canvas重绘

动静分离,将静态UI与动态UI分离到不同的Canvas下。Canvas在运行时会绘制成一个静态的Material,当一个小的UI顶点修改就会导致整个Canvas重新绘制Material。分离方式可根据自身项目改变。如背包中,某个道具在高亮情况下会有自身的动画或其他的改动。那么可以当道具高亮时动态添加Canvas组件,使其仅将添加的Canvas进行重绘,否则去掉该组件。如下

public void addCanvas(GameObject node, bool switch){
    Canvas c = node.GetComponent<Canvas>();
    if(c == null && switch){
        c = node.AddComponent<Canvas>();
        c.overrideSorting = true;
        c.sortingOrder = 15;
    }

    if(!switch){
        Destroy(c);
    }
}

 

若有不对,望指错!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值