unity编辑器创建资源优化UGUI

unity UI性能的四类问题

  • Canvas Re-batch 时间过长
  • Canvas Over-diry,Re-batch次数过多
  • 渲染网格顶多时间过长
  • Fill-rate Overutilization (UI shader中片源着色器利用率过高)

Canvas负责管理UGUI元素,负责UI渲染网格的生成与更新,并向GPU发送DC指令。

canvas绘制之前都需要一个合批的过程,如果canvas下的UI每帧保持不变,那么只需要合批一次,并且保存记录,下一帧还用这个结果。如果UI发生了变化,这是canvas需要重新匹配几何体,而这个canvas就会被diryt(脏标记),这是被标记的diryt的canvas就会触发Re-bacth。重新需要合批。

Canvas Re-batch过程

  • 根据UI深度关系进行排序
  • 检查UI元素的覆盖关系
  • 检查UI元素材质并进行合批

合批是多线程进行的。所有和每个平台的硬件设备有一定关系。

UGUI渲染细节

  • UGUI中渲染是在Transparent半透明渲染队列中完成的,半透明队列的绘制顺序是从后往前画,由于UI元素做Alpha Blend,我们在做UI时很难保障每一个像素不被重画,UI的Overdraw太高,这会造成片元着色器利用率过高,造成GPU负担
  • UI SpriteAtlas图集利用率不高的情况下,大量的完全透明的像素被采样也会导致像素被重绘,再次造成片元着色器利用率过高。同时纹理采样器浪费了大量的采样在无效的像素上,导致需要采样的图集像素不能尽快的被采样,造成纹理采样器的填充率过低,同样会带来性能问题

UGUI性能优化

使用canvas的使用准则

  • 将所有可能打断合批的层移动到最下边图层,尽量避免UI元素出现重叠区域
  • 可以拆分使用多个同级或嵌套的Canvas来减少Canvas的ReBatch复杂度
  • 拆分动态和静态的对象放到不同的canvas下,减少ReBatch次数,降低DC
  • 不使用Layout组件(如果UI布局是不规则的话 就不用layeout这样能减少rebuild 提升Re-batch的渲染效率)
  • Canvas的RenderMode尽量Overlay模式,减少Camer调用的开销

UGUI摄像(Raycaster)优化

  • 必要的需要交互的UI组才开启Raycast Target
  • 开启Raycast Targets的UI组件越少 层级越浅 性能越好
  • 对于复杂的控件,尽量在根节点开启 Raycast target

UI字体

  • 每个字体都是单独的四边形。避免字体快重叠,造成合批打断
  • 字体网格重建的情况有一些几点
    • UItext组件发生变化
    • 父级对象发生变化
    • UI组件或父对象enable/disable时

所以再大量文字的UI上Re-batch的时候会发生掉帧

UGUI 最容易产生性能问题的组件 滚动视图 Scroll view

  • 使用RectMask2d组件裁剪
  • 使用基于位置的对象池作为实例化缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity UGUIUnity游戏开发中常用的用户界面实现方法。UGUIUnity自带的用户界面系统,可以通过创建UI元素来构建游戏的界面。在Unity中,UGUI可通过创建Button、Text、Image等UI组件来实现交互和展示。 在UGUI中,通常选择ISO模型进行2D平面开发。通过锁定界面可以防止镜头发生偏移,确保界面的稳定性。 添加Button点击事件的方法如下: 1. 在Hierarchy面板中创建一个空物体GameObject。 2. 在Project面板中创建一个新的C#脚本,命名为OnClickButton,并将该脚本添加到GameObject上。 3. 双击OnClickButton脚本,在打开的脚本编辑器中输入相应的代码。该代码的作用是在点击按钮后输出"You click the button."和若干次"Yes"。 4. 在Click方法中使用print函数输出相关信息,并通过循环打印"Yes"特定次数。 5. 完成脚本的编写后,将脚本保存并返回Unity编辑器界面。 以上是关于Unity UGUI的简要介绍和Button点击事件的添加方法。希望对你有所帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [超详细的Unity UGUI教学](https://blog.csdn.net/qq_37701948/article/details/106682377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值