【Unity基础】初识UI Toolkit - 运行时UI

Unity中的UI工具包(UI Toolkit)不但可以用于创建编辑器UI,同样可以来创建运行时UI。

关于Unity中的UI系统以及使用UI工具包创建编辑器UI可以参见:

  1. Unity中的UI系统

  2. 初识UI Toolkit - 编辑器UI

本文将通过一个简单示例来介绍如何使用UI工具包来创建运行时UI。

一、创建UI Document(.uxml)

  1. 使用任意模板新建一个Unity项目。

  2. 在Project 中,右键点击Scene ,选择Create > UI Toolkit > UI Document ,命名为SimpleRuntimeUI。

  1. 在Project 里,点击SimpleRuntimeUI 右侧箭头展开后,双击inlineStyle,在文本编辑器里打开。并将文件内容替换为下面代码。

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| <ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" xsi="http://www.w3.org/2001/XMLSchema-instance" engine="UnityEngine.UIElements" editor="UnityEditor.UIElements" noNamespaceSchemaLocation="../UIElementsSchema/UIElements.xsd" editor-extension-mode="False"> <ui:VisualElement style="flex-grow: 1;"> <ui:Label text="This is a Label" display-tooltip-when-elided="true"/> <ui:Button text="This is a Button" display-tooltip-when-elided="true" name="button"/> <ui:Toggle label="Display the counter?" name="toggle"/> <ui:TextField picking-mode="Ignore" label="Text Field" text="filler text" name="input-message" /> </ui:VisualElement> </ui:UXML> |

二、将UI Document与场景关联

  1. 在场景中,选择菜单GameObject > UI Toolkit > UI Document ,新建一个对象。在Hierarchy中选择UIDocument,将Project 中的SimpleRuntimeUI.uxml 拖到Inspector 中的Source Asset中。

三、创建MonoBehaviour脚本

  1. 选择菜单Assets > Create > Scripting > Monobehaviour Script ,创建脚本并命名为SimpleRuntimeUI.cs。

  2. 双击SimpleRuntimeUI.cs,打开后将内容替换为下面代码。

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| using UnityEngine; using UnityEngine.UIElements; public class SimpleRuntimeUI : MonoBehaviour { private Button _button; private Toggle _toggle; private int _clickCount; //Add logic that interacts with the UI controls in the `OnEnable` methods private void OnEnable() { // The UXML is already instantiated by the UIDocument component var uiDocument = GetComponent<UIDocument>(); _button = uiDocument.rootVisualElement.Q("button") as Button; _toggle = uiDocument.rootVisualElement.Q("toggle") as Toggle; _button.RegisterCallback<ClickEvent>(PrintClickMessage); var _inputFields = uiDocument.rootVisualElement.Q("input-message"); _inputFields.RegisterCallback<ChangeEvent<string>>(InputMessage); } private void OnDisable() { _button.UnregisterCallback<ClickEvent>(PrintClickMessage); } private void PrintClickMessage(ClickEvent evt) { ++_clickCount; Debug.Log("{"button"} was clicked!" + (_toggle.value ? " Count: " + _clickCount : "")); } public static void InputMessage(ChangeEvent\ evt) { Debug.Log("{evt.newValue} -> {evt.target}"); } } |

  1. 保存文件并返回Unity。在Hierarchy 中选择UIDocument,将Project 中的SimpleRuntimeUI拖到Inspector的空白处,给UIDocument添加脚本组件。

  2. 点击"运行",在Game窗口中就可以看到如下UI。点击Button,可以在控制台看到输出的消息。

相关推荐
学习论之费曼学习法7 小时前
无人值守AI内容矩阵实战(7):Playwright 发布器避坑——编辑器竞态、索引延迟与风控
python·线性代数·矩阵·编辑器·浏览器自动化·playwright·踩坑记录
心态还需努力呀7 小时前
把 Zettlr 搬上鸿蒙 PC:墨匣学术写作编辑器移植与上架全记录
华为·编辑器·harmonyos
努力学习的小廉7 小时前
UE5 入门系列(二):编辑器基础操作速通
ue5·编辑器
特立独行的猫a8 小时前
AI时代的应用开发神器:cj-tauri 已支持鸿蒙 PC,第一次的踩坑记录
ui·harmonyos·tauri·仓颉·鸿蒙pc·cj-tauri
郝学胜-神的一滴1 天前
游戏设计:原型与开发 08:我们到底在为谁做游戏
程序人生·游戏·游戏引擎·游戏开发·游戏策划
五仁烧饼1 天前
动手学 Shader Graph(二):溶解与边缘发光
游戏·unity·shader·shader graph
淡海水1 天前
06-02-源码-增量标记算法实现
算法·unity·c#·gc
Highcharts.js1 天前
BI可视化图表“维护难”问题的解决方案
开发语言·前端·javascript·编辑器·ecmascript·bi·highcharts
淡海水1 天前
06-01-源码-Incremental GC总览与设计
unity·c#·gc