在我学习开发 unity 游戏尝试进行 UI 的构建的过程中,尝试寻找当前 Unity 最为推荐的 UI 构建方式,或者说最优的框架方案。
在中文网里寻找了半天,总感觉很多文章和教程给了方案,但又说不清楚为啥用这个方案,或者给出让人信服的证据。
所以在这里还是老生常谈的一句话:看官网
中文文档大概都是过了好几手的东西,最终信息难免失真或者有偏差,本篇最为二手解释,仍然希望你可以直接阅读官网
附上链接:UIToolkits 官方文档
在官方文档中,给出了三种 UI 构建的解决方案
同时也提到了这样一句话
Unity intends for UI Toolkit to become the recommended UI system for new UI development projects, but it is still missing some features found in Unity UI (uGUI) and IMGUI.
也就是说官方想要主推 UI Toolkit
当我看到这句话的时候我就已经决定使用 UI Toolkit,官方都主推了,无脑用就行了。
但是,这个但是很重要 UI Toolkit 相较于另外两个仍然缺少部分功能,也就是说如果你想构建更丰富的 UI 交互 UI Toolkit 可能无法很好的实现,具体来详细看下对比。
好吧,其实总结下来,如果你新手刚入门,无脑 UI Toolkit 就行了,但是如果你有 UGUI 的基础,可以仍然使用 UGUI ,IMGUI 并不推荐
在官方文档 Comparison of UI systems in Unity 一文中提到
UI Toolkit 正在积极开发并经常发布新功能。uGUI 和 IMGUI 是已建立并经过生产验证的 UI 系统,不经常更新。
如果您需要 UI Toolkit 中尚未提供的功能,或者需要支持或重用旧版 UI 内容,uGUI 和 IMGUI 可能是更好的选择。
UI Toolkit 是在新的 UI 开发项目中比较推荐的 UI 系统,在当前版本 (2023.3)当中 UI Toolkit 不具备 UGUI 和 IMGUI 支持的某些功能
UGUI 和 IMGUI 某些情况更为合适,并且支持遗留的项目。
关于UI Toolkit、Unity UI(uGUI)和Immediate Mode GUI(IMGUI)的详细比较
运行时(Runtime)方面:
- Unity UI(uGUI) 在运行时被推荐用于处理UI在3D世界中的定位和照明、自定义着色器和材质的视觉效果、以及从MonoBehaviours中轻松引用。
- UI Toolkit 则是在创建适应多种屏幕分辨率的屏幕叠加UI时的替代选择。如果你需要制作大量用户界面工作、需要艺术家和设计师熟悉的创作工作流程、或者寻求无纹理UI渲染能力,考虑使用UI Toolkit。
用例(Use Cases):
- 在处理多分辨率项目中的菜单和HUD时,UI Toolkit 被推荐使用。
- 对于在世界空间中的UI和VR,使用 Unity UI。
- 如果需要定制的着色器和材质,也使用 Unity UI。
详细的运行时特性:
- 在WYSIWYG(所见即所得)创作方面,UI Toolkit 和 Unity UI 都支持。
- UI Toolkit 支持嵌套可重用组件、全局样式管理、布局和样式调试器等特性,而有一些 Unity UI 不支持。
- 对于一些特殊需求,比如渲染管线支持、屏幕空间(2D)和世界空间(3D)渲染,以及自定义材质和着色器,你需要根据具体情况选择使用 UI Toolkit 还是 Unity UI。
编辑器方面(Editor):
- UI Toolkit 在创建复杂编辑器工具、属性抽屉(Property drawers)以及与设计师协作时被推荐使用。它具有更好的可重用性、解耦性,以及用于创作UI的视觉工具。
- IMGUI 是一个替代方案,适用于需要无限制访问编辑器可扩展功能、快速在屏幕上渲染UI的情况。
详细的编辑器特性:
- 对于WYSIWYG创作、嵌套可重用组件、全局样式管理、布局和样式调试器等特性,UI Toolkit 在编辑器方面都支持。
- IMGUI 则提供一种轻量级API,可以快速在屏幕上渲染UI,但在某些方面可能不如 UI Toolkit 那么强大和可扩展。
在官方文档中对于 IMGUI 并不推荐使用,它是一种传统的 GUI 系统,所以我这里不推荐 IMGUI ,仅对 UI Toolkit 还是 UGUI 的使用取舍上进行讨论。
优势:
劣势:
优势:
劣势:
选择建议:
整体上我是更倾向于使用更新的 UI Toolkit 的,但是为了避免选择时导致后续开发阻塞,搞清楚 UGUI 好于 UI Toolkit 哪些方面也很重要
总体而言,UI Toolkit 和 Unity UI (uGUI) 都是功能强大的UI系统,可以满足大多数项目的需求。然而,由于两者在实现上的不同,某些效果在一个系统中可能更容易实现,而在另一个系统中可能需要更多的工作。以下是一些可能在 uGUI 中相对容易实现但在 UI Toolkit 中可能需要更多努力的效果:
特殊渲染需求: 如果你的项目需要一些特殊的渲染效果,可能需要自定义着色器和材质,uGUI 由于更直接的着色器支持,可能在这方面更灵活。
旧项目的迁移: 如果你正在维护一个使用 uGUI 的旧项目,而不想或不需要进行大规模的迁移工作,继续使用 uGUI 可能是更直接的选择。
某些特定的3D界面需求: 在处理一些复杂的3D界面需求时,例如将UI元素与3D对象直接关联或在3D场景中进行布局,uGUI 可能更直接。
依赖于广泛社区支持的特定插件: 如果你使用了一些依赖于 uGUI 的第三方插件或工具,这些插件可能在 UI Toolkit 中没有相应的支持。
需要注意的是,这些差异并不是绝对的,而且 UI Toolkit 在不断发展,未来的版本可能会支持更多的特性和效果。在选择UI系统时,最好根据项目的具体需求、团队的技能水平以及个人的开发偏好来权衡。如果在两者之间存在疑虑,也可以考虑进行一些小规模的试验,看哪个更适合你的项目。