Unity3D :Unity 中 UI 系统的对比

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

Unity 中 UI 系统的对比

Unity 打算让 UI 工具包成为新 UI 开发项目的推荐 UI 系统,但它仍然缺少 Unity UI (uGUI) 和 IMGUI 中的一些功能。这些较旧的系统更适合某些用例,并且需要支持遗留项目。

本页面提供了 UI 工具包、Unity UI 和 IMGUI 的高级功能比较,以及有关它们各自的 UI 设计方法的说明。使用该内容可帮助确定哪种 UI 系统适合您的项目。

重要
UI 工具包正在积极开发中。本页面将随着功能集的发展而频繁更新。

一般考虑因素

UI 的类型:编辑器或运行时

对 UI 系统的选择取决于是为 Unity 编辑器开发 UI,还是为游戏或应用程序开发运行时 UI。

UI 的类型UI 工具包Unity UI(uGUI)IMGUI注意事项
运行时(游戏内)不推荐出于性能原因,Unity 不推荐将 IMGUI 用于游戏内运行时 UI。
Unity EditorYou can’t use Unity UI to make UI for the Unity Editor.

若要创建运行时 UI,可在 UI 工具包与 Unity UI (uGUI) 之间进行选择。请参阅功能比较:UI 工具包与 Unity UI (uGUI)。

若要为 Unity 编辑器创建 UI,可在 UI 工具包与 IMGUI 之间进行选择。请参阅功能比较:UI 工具包与 IMGUI。

角色和技能集

团队的技能集以及对不同技术的习惯程度也是一个重要的考虑因素。

用户的类型UI 工具包Unity UI
(uGUI)
IMGUI注意事项
程序员程序员可以使用任何游戏开发工具或 API。
技术美术师部分支持熟悉 Unity 基于游戏对象的工具和工作流程的技术美术师可能会习惯使用游戏对象、组件和 Scene 视图。

他们可能不习惯 UI 工具包类似于 Web 的方法或 IMGUI 的纯 C# 方法。
UI 设计师部分支持熟悉 UI 创建工具的 UI 设计师可能会习惯 UI 工具包基于文档的方法。

如果他们不熟悉基于游戏对象的工作流程,则可能需要程序员和/或关卡设计师提供帮助。

创新和开发

UI 工具包正在积极开发中。Unity 会在每个版本中添加新功能。Unity UI 和 IMGUI 是成熟的 UI 系统,它们已经过生产验证,不过很少更新。

如果需要 UI 工具包中尚未提供的功能,或者计划支持或重用较旧的 UI 内容,则 Unity UI 和 IMGUI 可能是更好的选择。

功能比较:UI 工具包与 Unity UI (uGUI)

此部分将 UI 工具包与 Unity UI(以及 TextMesh Pro 包)进行比较,以便为游戏和应用程序开发运行时 UI。

  • Unity 编辑器 UI 开发
  • 工作流程
  • 样式
  • 布局
  • 事件
  • 渲染
  • 动画
  • 可定制性

Unity 编辑器 UI 开发

It’s not possible to develop user interfaces for the Unity Editor using Unity UI.

工作流程

功能UI 工具包UGUI+TMP注意事项
嵌套预制件部分支持UI 工具包的 UXML 模板支持属性覆盖,类似于 Unity 预制件系统中的已修改属性。

UGUI 基于游戏对象,支持标准 Unity 预制件。
所见即所得的创作Unity UI 和 UI 工具包提供不同的所见即所得的创作体验。

由于 Unity UI 是基于游戏对象的,因此您可以为所见即所得的创作设置场景视图。

UI 工具包为基于文档的所见即所得 UI 创作提供了 UI 生成器,具有类似 Web 的工作流。
主题化计划UI 工具包路线图包括通过 UI Builder 和 USS 导入支持主题功能。
布局和样式调试器可以在 Inspector 窗口中调试 Unity UI 界面。

UI 工具包提供一个专用的调试器(菜单:Window > UI Toolkit > Debugger),类似于主要 Web 浏览器中的调试工具。
场景集成Unity UI 游戏对象在“场景”视图和“游戏”视图中可见。

您可以通过运行时组件集成使用 UI 工具包创建的运行时 UI,并将其显示在“游戏”视图中。

样式

功能UI 工具包UGUI+TMP注意事项
内联样式
层叠样式
伪状态(例如,悬停或激活)Unity UI 提供简单的伪状态,您可以使用 Unity 的动画图为其创建复杂的伪状态。

UI 工具包通过 USS 支持伪状态
富文本标签计划UI 工具包中的富文本标记支持计划作为 Unity 文本渲染后端更新的一部分。

默认情况下,Unity UI 支持一组基本的富文本标签,并通过 TextMesh Pro 包支持更大的一组富文本标签。
SDF 文本计划UI 工具包中的 SDF 文本支持计划作为 Unity 文本渲染后端大修的一部分。

Unity UI 通过 TextMesh Pro 包支持 SDF 文本。
字体后备计划UI 工具包中对字体资源和回退字体的支持计划作为 Unity 文本渲染后端大修的一部分。

Unity UI 通过 TextMesh Pro 包支持回退字体。

布局

虽然 Unity UI 和 UI 工具包提供相同的布局可能性,但其布局系统大不相同。

  • 借助 Unity UI,可以使用 RectTransForm 组件在游戏对象级别上控制布局。
  • 借助 UI 工具包,可以在 USS 样式表中定义布局,使用更类似于 Web 的基于 Flexbox 的布局系统。
功能UI 工具包UGUI+TMP注意事项
手动布局(绝对或相对于父项)
一维(水平和垂直)
二维(网格)研究Unity UI 提供 GridLayoutGroup 组件。

对于 UI 工具包,Unity 在研究在 USS 中实现 CSS 样式网格的可能性。

事件

功能UI 工具包UGUI+TMP注意事项
与 Unity 新输入系统集成计划
序列化事件计划UI 工具包只能在 C# 中将事件绑定到元素。

Unity UI 可以序列化事件绑定。
事件的可视化脚本研究

Rendering

在 UI 工具包与 Unity UI 之间进行选择是高性能与多功能性/支持的功能之间的权衡。

UI 工具包目前支持较少的功能集,但更易于优化呈现性能。它基于文档,数据驱动,并使用单个着色器、材质和纹理图集来绘制元素层次结构。对于包含复杂元素层次结构的简单屏幕空间 UI(例如,菜单或平视显示器),它是一个不错的选择,并且在任何平台上都表现良好。

Unity UI 的功能更多,并支持高级渲染和文本功能。可以使用自定义材质设置任何视觉元素,并利用高级裁剪和遮罩功能。但是,这些功能可能会使得难以在性能预算内保持更复杂的 UI。

功能UI 工具包UGUI+TMP注意事项
支持内置渲染管线
支持通用渲染管线 (URP)
支持高清渲染管线 (HDRP)
屏幕空间 (2D) 渲染
世界空间 (3D) 渲染计划
自定义材质和着色器计划
Shader Graph 集成计划
SVG 集成计划计划com.unity.vectorgraphics 包为 Unity UI 提供 SVG 支持。但是,该包当前处于预览版,不建议用于生产。
Antialiasing计划部分支持Unity UI 的屏幕空间 - 摄像机世界空间渲染模式使用应用抗锯齿的摄像机。
2D 旋转(对象保持在 UI 平面上)
3D 旋转计划
矩形裁剪部分支持UI 工具包支持不带旋转的矩形裁剪。矩形必须轴对齐。
遮罩裁剪部分支持UI 工具包支持带 2D 旋转的遮罩裁剪。

Unity UI 支持 3D 遮罩旋转。
嵌套遮罩部分支持/计划UI 工具包的嵌套掩码仅限于一个级别,但不会影响绘制调用批处理。计划多级嵌套掩码。

Unity UI 最多支持八个级别的嵌套遮罩,但每隔一个级别就会中断绘制调用批处理。

Animation

功能UI 工具包UGUI+TMP注意事项
补间工作流程Experimental部分支持
与动画剪辑和时间轴集成计划

可定制性

功能UI 工具包UGUI+TMP注意
开源/可定制计划UI Toolkit is customizable.

功能比较:UI 工具包与 IMGUI

此部分将 UI 工具包与 IMGUI 进行比较,以便为 Unity 编辑器开发用户界面。

  • Inspector 集成
  • 控件和数据绑定
  • 工作流程
  • 样式
  • 布局
  • 事件
  • 渲染
  • 动画
  • 可定制性

Inspector 集成

FeatureUI ToolkitIMGUINotes
Default InspectorsPlannedUI 工具包将成为检查器窗口的默认 UI 后端(当类型没有自定义编辑器时)。
Inspector: Edit custom object types
Inspector: Edit custom property types
Inspector: Mixed values (multi-editing) supportPlanned
Array / list-view controlPlanned

控件和数据绑定

功能UI 工具包IMGUI注意事项
树视图计划
网格视图计划
图形视图计划
数据绑定:序列化属性
来自任何 C# 类型的数据绑定计划
到任何属性或样式值的数据绑定计划

工作流程

FeatureUI ToolkitIMGUINotes
Nested PrefabsPartialUI 工具包的 UXML 模板支持属性覆盖,这类似于 Unity 预制件系统中修改的属性。
WYSIWYG authoringUI 工具包为基于文档的所见即所得 UI 创作提供了 UI 生成器,具有类似 Web 的工作流。
ThemingPlanned
Layout & Styling DebuggerIMGUI对布局和样式的调试工具有限。

UI 工具包提供了一个专用的调试器(菜单:窗口> UI 工具包>调试器),类似于主要 Web 浏览器中的调试工具。
Scene View integration

样式

功能UI 工具包IMGUI注意事项
内联样式
层叠样式
伪状态(例如,悬停或激活)部分支持
富文本标签计划UI 工具包中的富文本标记支持计划作为 Unity 文本渲染后端更新的一部分。
SDF 文本计划UI 工具包中的 SDF 文本支持计划作为 Unity 文本渲染后端更新的一部分。
字体后备计划

布局

虽然 Unity UI 和 IMGUI 提供相同的布局可能性,但其布局系统大不相同。

  • IMGUI 使用基于 C# 的 GUILayout 系统。
  • UI 工具包使用更类似于 Web 的基于 Flexbox 的布局系统。可以通过 USS 样式控制布局。
功能UI 工具包IMGUI注意事项
手动布局(绝对或相对于父项)
一维(水平和垂直)
二维(网格)研究中对于 UI 工具包,Unity 在研究在 USS 中实现 CSS 样式网格的可能性。

事件

功能UI 工具包IMGUI注意事项
与 Unity 新输入系统集成计划
序列化事件计划
事件的可视化脚本研究

Rendering

功能UI 工具包IMGUI注意事项
支持内置渲染管线
支持通用渲染管线 (URP)
支持高清渲染管线 (HDRP)
屏幕空间 (2D) 渲染
世界空间 (3D) 渲染计划虽然在技术上可以使用 在 IMGUI 中创建 3D UI,但不建议这样做。GUI.matrix
自定义材质和着色器计划
Shader Graph 集成计划
SVG 集成计划
抗锯齿计划

Animation

功能UI 工具包IMGUI注意事项
补间工作流程Experimental
与动画剪辑和时间轴集成计划

可定制性

功能UI 工具包IMGUI注意事项
开源/可定制计划UI Toolkit is customizable.

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :动画术语表 (mvrlink.com)

下一篇:Unity3D :UI 工具包 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号