• Unity UGUI开发规范


    前言

    今天给大家分享Unity UI开发相关的一些编码和规范,有了这些指导规范,帮助你的项目获得更好的性能,少走弯路。Unity GUI(也被称为UGUI)经常是项目性能问题的来源。

    对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习unity的零基础小白,也有一些正在从事unity开发的技术大佬,欢迎你来交流学习。

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

    大部分情况下,我们一套UI,能基本全部适配好,Unity UI让建立一个可以适应不同分辨率和宽高比屏幕调整位置和缩放UI很简单。然而,一种设计不总适合所有平台,所以创建多种版本的UI(或者说部分UI)来让每个设备上都有最佳的体验。务必要在各种支持的设备上测试你的UI以确保用户体验是最佳且一致的。

    配置一个Unity UI Canvas

    避免使用少量的Canvas

    注意Layout Group

    Layout Group是另一个常见的性能问题源,尤其是嵌套使用它们的时候。当在Layout Group中的UI Graphics组件改变了的时候,例如说当ScrollRect移动的时候,UGUI会递归向上查找场景的层级直到找到一个没有组件父母节点。该layout和里面的所有东西随后都会被重建。

    尽量避免使用Layout Groups,尤其是当你的内容并非动态的时候。为避免Layout Group仅仅用来初始化随后不会改变的布局内容,考虑添加一些自定义代码来在内容初始化之后禁用那些Layout Group组件。

    List和Grid视图可能会很昂贵

    避免大量重叠的元素

    由多层重叠的元素构成的UI并不少见。一个合适的例子可能是卡牌游戏中的一个卡片Prefab。尽管这种方式可以允许许多设计上的自由度,大量的像素overdraw可能会极大的影响性能。它甚至可能导致更多次数的绘制分批。请研判你是否能将多个层级元素合成为更少(乃至一个)的元素。

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

    组合你的UI贴图以改善合批

    确保将UI贴图尽可能地合成成一张大贴图以改善合批。将逻辑上属同一类的贴图合成一张大贴图合情合理,但也要小心大贴图不要过大以及/或者过于稀疏地填充。这是一个常见的内存浪费来源。

    当你添加一个新的UI窗口或屏幕时请小心

    当添加一个新的UI窗口或是屏幕时经常会引发项目中的问题。这有许多潜在的原因(例如,因为根据需求加载资源以及实例化一个有大量UI组件复杂结构的纯粹开销)。

    也尝试减少UI的复杂程度,考虑缓存相对来讲经常使用的UI组件。禁用并启用它然而不是每次都摧毁并重实例化它。

    当不需要时禁用Raycast Target

    对不需要输入事件的元素禁用Raycast Target

    好,今天总结了UI开发中常见的一些规范与优化技巧,关于UGUI的DrawCall优化,我这边有一个教程《Unity UGUI的Drawcall优化》

  • 相关阅读:
    A股风格因子看板 (2023.09 第04期)
    老牌好用免费的数据恢复软件easyrecovery操作简单一键恢复
    NXP i.MX 8M Mini工业核心板B2B版本,4核ARM Cortex-A53@1.6GHz设计
    FFmpeg源代码简单分析-编码-avcodec_encode_video()已被send_frame 和 receive_packet替代
    Android悬浮窗实现源码-悬浮球转盘&悬浮加速小火箭效果&悬浮播放视频图片
    链霉亲和素修饰聚苯乙烯微球,streptavidin修饰聚苯乙烯微球
    ant提供对所有系统属性的访问
    C++原子操作和互斥锁性能(速度)对比
    浅谈spring-createBean
    【34】理解虚拟机:你在云上拿到的计算机是什么样的?
  • 原文地址:https://blog.csdn.net/voidinit/article/details/126542067