zoukankan      html  css  js  c++  java
  • NGUI 优化

    1. Update

      Ngui 组件继承关系是  UIWidget : UIRect : MonoBehaviour. 

    因此由每个组件的独自调用update变更为,由某个更新点,统一调用会效率提升。并且可以调整更新频率。

    2. NGUI UIDrawcall 优化:

     参考:NGUI开发技巧(上,下)

          https://v.qq.com/x/page/j0336jncwn5.html

          https://v.qq.com/x/page/r0342tl5e47.html

      工具:NGUI->Open-> Panel Tool && UIDrawCall Tool 

      A. UIDrawCall 个数优化。

       一个panel可以多个UIDrawcall UIDrawcall个数 = 将此panel下的widget按depth排序,材质相同的划归为一个UIDrawCall. 

         所以减少DrawCall个数就要尽可能的避免材质交叉,即把材质相同的widget的depth调到相邻。

       优化方法:

            a. 文字与图片depth规划好。

            b. 调 widget.depth

      B. UIDrawCall.UpdateGeometry:  Set the draw call's geometry

        包括某一个UIDrawCall内部三角形重建,另一种情况是此UIPanel下的所有DrawCall的重建。

         第一种情况常出现在:此DrawCall内顶点数据变更(如transform位移,缩放,颜色变化)都会触发此mydrawCall.updateGeometry().

         第二种情况(重建所有DrawCall)出现在 UIPanel.mRebuild = true 的情况。如

          a. UIPanel.RemoveWidget (UIWidget w): w 正好是某个drawCall的边界组件。

              b. 材质交叉:使用了a材质的widget.depth插入了使用b材质的某个drawcall. 

              c. panel.OnInit 及 OnEnable时。

       优化原理:

           a. 避免重建.  

         b. 不可避免重建时,减少重建的量。

         常用方法:

            a. 动静分离:加UIPanel.重建时只重建动态部分的三角形

      C. UITexture不是使用的图集所以会单独占用一个DrawCall.  

      D. UI上的粒子特效: 不会影响UIDrawCall个数。

    3. UILable:  OutLine, Shadow. 效果

    4. UISprite: 平铺类型

    5. UIFont: 

        文字的材质合并不到一起,可能的原因是使用了不同的字体。       

     

  • 相关阅读:
    amuse ui(web插件,js插件,css样式)?
    解决ajax重复提交问题?
    AJAX防重复提交的办法总结?
    iOS中发送HTTP请求的方案
    巧用Xode中的代码块(转)
    SVProgressHUD进度条蒙版
    NSTimer scheduledTimerWithTimeInterval与timerWithTimeInterval、initWithFireDate的区别
    小结RunLoop
    初学RunLoop
    CocoaPods安装及使用详情
  • 原文地址:https://www.cnblogs.com/javalzy/p/6607988.html
Copyright © 2011-2022 走看看