包含此页的版本:
不含此页的版本:
您可以通过以下步骤创建运行时 UI 并将其显示在游戏视图中:
.uxml) 带控件.MonoBehaviours以定义 UI 控件的行为.尝试以下简单的运行时 UI 示例以开始使用。该示例在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表.单击按钮时,控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。更多信息
请参阅术语表显示一条消息。选择切换并单击按钮时,控制台窗口会显示按钮被单击的次数。在文本字段中输入文本消息时,“控制台”窗口将显示该消息。
本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发人员。在开始之前,请熟悉以下内容:
您可以在此 GitHub 存储库中找到此示例创建的已完成文件。
创建带有标签、按钮和切换的UI文档。有关如何使用UI Builder或UXML添加UI控件的信息,请参阅UI Toolkit入门。
在 Unity 编辑器中使用任何模板创建项目。
创建名为SimpleRuntimeUI.uxml包含以下内容:
<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>
创建 UIDocument游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表,并将UI文档添加为源资产。
在 SampleScene 中,选择 游戏对象 > UI 工具包 > UI 文档。这将创建以下内容:
选择层次结构中的 UIDocument 游戏对象,然后从项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
在术语表中查看到 UI 文档组件的 源资产(Source Asset) 字段检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表窗。这将源资产引用到你创建的UXML文件。
若要添加逻辑,请创建一个派生自MonoBehaviour以访问 UI 文档组件引用的控件。
Unity 在以下情况下加载 UI 文档组件的源 UXMLOnEnable在组件上调用。若要确保正确加载视觉树,请添加逻辑以与OnEnable方法。
创建名为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<string> evt)
{
Debug.Log($"{evt.newValue} -> {evt.target}");
}
}
将SimpleRuntimeUI.cs添加为 UIDocument GameObject 的组件。
取决于在项目设置广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
请参阅术语表,
以及是否要将 UI Toolkit 面板与 uGUI 画布混合使用,
有许多可用选项可以修改 UI Toolkit 处理输入的方式
生成其运行时事件。
有关更多信息,请参阅运行时事件系统。