LOADING

页面加载中...

Unity 使用UI ToolKit完成编辑器扩展

简介

UI Toolkit 是 Unity 提供的一套用于构建用户界面的现代化框架,最初主要应用于 Unity 编辑器扩展,后续也逐步支持运行时界面开发。它借鉴了 Web 开发中的 HTMLCSS 和事件系统,通过 UXML 描述界面结构、USS 定义样式,并使用 C# 编写交互逻辑。

主要组成

  • VisualElement:UI Toolkit 中所有界面元素的基础类。
  • UXML:一种用于描述 UI 层级结构的 XML 格式,便于将界面布局与业务逻辑分离。
  • USS:类似 CSS 的样式表,用于设置元素的颜色、尺寸、间距和布局等属性。
  • UI Builder:Unity 提供的可视化编辑工具,可以通过拖拽方式设计界面并生成 UXML 与 USS 文件。
  • 事件系统:支持点击、输入、拖拽、键盘等常见交互事件。

UI Toolkit 的优势

  1. 开发效率高:可以使用 UI Builder 快速搭建界面,减少手动创建和调整 UI 的工作量。
  2. 结构清晰:通过 UXML、USS 和 C# 分离布局、样式与逻辑,方便维护和复用。
  3. 样式复用方便:USS 支持选择器和样式继承,可以统一管理多个控件的外观。
  4. 适合编辑器扩展:相比传统的 IMGUI,UI Toolkit 更适合构建复杂、可维护的 Unity 编辑器窗口。

适用场景

UI Toolkit 常用于自定义 Inspector、EditorWindow、编辑器工具面板以及运行时菜单、设置界面等场景。对于需要复杂布局、统一样式和长期维护的项目,UI Toolkit 是一个值得使用的选择。

实际项目中的应用与开发

以博主的UI ToolKit作编辑器扩展开发历程来说,UI ToolKit能完成

  1. 小工具开发:如格式批处理转换窗格。
  2. 关卡编辑器
  3. 复选菜单栏
  4. 编辑器窗口

等等内容,接下来博主将展示一些UIToolKit使用UIToolKit的实际开发内容。

ALOL 数独小游戏的关卡编辑器

ALOL是一款数独类型的解密游戏。对于编关人员来说,能否自定义格子元素的内容,自动检测关卡是否存在问题,或一键生成关卡,能极大的方便编关人员的关卡编写。

ALOL的关卡编辑器采用UIToolKit打造,配合ScriptableObject完成关卡的存储与编写。

UIToolKit的组件编写类似网页开发,以下是关卡编辑器面板和元素格子的UXML可视面板。

LoopSort传送带货物装载游戏的关卡编辑器与货车预制件编辑窗口

后续内容

因为有着和网页相似的开发模式,UIToolKit在开发组件时的自定义程度非常高,但往往开发周期不可控。所以,后续博主会尝试学习Odin插件来完成快速的编辑器扩展。