找回密码
 立即注册
查看: 126|回复: 0

Unity 法式员UI编码规范

[复制链接]
发表于 2024-7-15 17:43 | 显示全部楼层 |阅读模式
今天给大师分享Unity UI开发相关的一些编码和规范,有了这些指导规范,辅佐你的项目获得更好的性能,少走弯路。Unity GUI(也被称为UGUI)经常是项目性能问题的来源。


考虑使用多分辩率和宽高比



避免使用少量的Canvas

别将你的UI元素放在一个或者几个大Canvas中。每个Canvas都对其所有元素维护一个网格。当一个元素改变的时候,这个mesh会被从头创建。将UI元素放入分歧的Canvas中,最好是按照其更新频率来分组。将动态元素和静态元素分隔将避免重建静态网格数据的消耗。
注意Layout Group



List和Grid视图可能会很昂贵

List和Grid视图是另一个常见的UI模式(例,背包或商店界面)。在这种情况下,当可能有上百个物品而一小部门可见,请勿为所有物品创建UI元素,那样的会非常昂贵。请实现一种模式以重用元素并在它们移动出一边时将它们放回另一边上。一位Unity工程师已经提供了一个Github项目使用例。
避免大量重叠的元素



思考你如何使用Mask和RectMask2D组件

Mask和RectMask2D组件在UI中常常用到。Mask操作衬着方针的模板缓冲来决定是否绘制像素,几乎将成本全部放在GPU上。RectMask2D在CPU上运行边界查抄来丢弃在蒙版外的元素。拥有大量RectMask2D组件的复杂的UI,尤其是嵌套时,可能会占用可不雅观的CPU性能来进行边界查抄。小心别过多使用RectMask2D组件。或者是你项目GPU负载低于CPU负载时,考虑切换到Mask组件以平衡总体的负载。
组合你的UI贴图以改善合批



在绝大部门情况下,UI贴图是不需要mipmap的。所以请确保其在Import Setting中是禁用的,除非你确实需要它(比如说世界空间中的UI)。
当你添加一个新的UI窗口或屏幕时请小心



当不需要时禁用Raycast Target

记得禁用UI Graphic元素的Raycast Target选项,如果它们不需要接受输入事件。许多UI元素都不需要接受输入事件,比如在按钮上文字或者不成交互的图片。然而,UI Graphic组件的Raycast Target选项时默认开启的。复杂的UI可能会有大量非必需的Raycast Target,所以禁用它们可能会节省不少的CPU措置时间。
对不需要输入事件的元素禁用Raycast Target
好,今天总结了UI开发中常见的一些规范与优化技巧,关于UGUI的DrawCall优化,我这边有一个教程《Unity UGUI的Drawcall优化》点击直接可以看 需要的同学可以进入学习小组

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-17 02:27 , Processed in 0.248241 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表