zoukankan      html  css  js  c++  java
  • UI优化策略高级技巧

    1:对象池中对象用scale=0或者alphaGroup=0来控制更佳, 当UGUI控件 scale=0时顶点数也会变为0

    2:如果出现了WaitingForJob或PutGeometryJobFence,则说明合并网格开销很大。

    3:Z一定要调为0,除非有3DUI穿插。

    4:Image为null或者alpha为0不能降低开销,Image为null还会不能合并。

    5:Item类型,如果当前图标和相邻图标(非当下图标)有重叠,那么则不会合并为2个drawcall。

    6:当某一个item类型处于选中,播放动画等状态,并且所处canvas下内容比较多的情况下,可以单独把item放到预先建好的动态canvas里,取消选中时再放回去。

    7:动态文字尽量不用UI/Effect/shadow和UI/Effect/Outline。(会使得文本的Mesh增加4倍)

    8:两个功能UI有一个需要隐藏的,例如新打开的界面完全遮挡住了之前的界面,可以在摄像机上设置一个层级不渲染,通过修改面板的layer来控制是否可见。

    9:如果修改的是Image组件上的Color属性,其原理是修改顶点色,因此是会引起网格的Rebuild的(即Canvas.BuildBatch操作,同时也会有Canvas.SendWillRenderCanvases的开销)。而通过修改顶点色来实现UI元素变色的好处在于,修改顶点色可以保证其材质不变,因此不会产生额外的Draw Call。

    10:在UI的默认Shader中存在一个Tint Color的变量,正常情况下,该值为常数(1,1,1),且并不会被修改。如果是用脚本访问Image的Material,并修改其上的Tint Color属性时,对UI元素产生的网格信息并没有影响,因此就不会引起网格的Rebuild。但这样做因为修改了材质,所以会增加一个Draw Call。

    11:CanvasGroup的经典使用

    -在窗口的GameObject上添加一个CanvasGroup,通过控制它的Alpha值来淡入或淡出整个窗口。

    -通过给父级GameObject添加一个CanvasGroup并设置它的Interactable值为false来制作一整套没有交互(灰色)的控制。

  • 相关阅读:
    OSCP Learning Notes Buffer Overflows(3)
    OSCP Learning Notes Buffer Overflows(5)
    OSCP Learning Notes Exploit(3)
    OSCP Learning Notes Exploit(4)
    OSCP Learning Notes Exploit(1)
    OSCP Learning Notes Netcat
    OSCP Learning Notes Buffer Overflows(4)
    OSCP Learning Notes Buffer Overflows(1)
    OSCP Learning Notes Exploit(2)
    C++格式化输出 Learner
  • 原文地址:https://www.cnblogs.com/TravelingLight/p/8995171.html
Copyright © 2011-2022 走看看