Version: 6000.3
语言: 中文
支持运行时 UI
配置运行时 UI

运行时 UI 入门

您可以通过以下步骤创建运行时 UI 并将其显示在游戏视图中:

  1. 创建UI文档(.uxml) 带控件.
  2. 在场景中添加UIDocument游戏对象,并将UXML文件添加为其源资产
  3. 创造MonoBehaviours以定义 UI 控件的行为.
  4. (可选)配置运行时事件系统

尝试以下简单的运行时 UI 示例以开始使用。该示例在场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.单击按钮时,控制台窗口Unity 编辑器窗口,显示 Unity 或您自己的脚本生成的错误、警告和其他消息。更多信息
请参阅术语表
显示一条消息。选择切换并单击按钮时,控制台窗口会显示按钮被单击的次数。在文本字段中输入文本消息时,“控制台”窗口将显示该消息。

先决条件

本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发人员。在开始之前,请熟悉以下内容:

您可以在此 GitHub 存储库中找到此示例创建的已完成文件。

创建包含控件的 UI 文档

创建带有标签、按钮和切换的UI文档。有关如何使用UI Builder或UXML添加UI控件的信息,请参阅UI Toolkit入门

  1. 在 Unity 编辑器中使用任何模板创建项目。

  2. 创建名为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文档添加为源资产。

  1. 在 SampleScene 中,选择 游戏对象 > UI 工具包 > UI 文档。这将创建以下内容:

    • 一个UI工具包文件夹,其中包含面板设置资产和默认运行时主题。
    • 附加了 UI 文档组件的游戏对象,并且 UI 文档组件连接到面板设置资产。
  2. 选择层次结构中的 UIDocument 游戏对象,然后从项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
    术语表中查看
    到 UI 文档组件的 源资产(Source Asset) 字段检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗。这将源资产引用到你创建的UXML文件。

定义 UI 控件的行为

若要添加逻辑,请创建一个派生自MonoBehaviour以访问 UI 文档组件引用的控件。

Unity 在以下情况下加载 UI 文档组件的源 UXMLOnEnable在组件上调用。若要确保正确加载视觉树,请添加逻辑以与OnEnable方法。

  1. 创建名为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}");
        }
    }
    
  2. SimpleRuntimeUI.cs添加为 UIDocument GameObject 的组件。

配置运行时事件系统

取决于在项目设置广泛的设置集合,允许您配置物理、音频、网络、图形、输入和项目的许多其他区域的行为方式。更多信息
请参阅术语表
, 以及是否要将 UI Toolkit 面板与 uGUI 画布混合使用, 有许多可用选项可以修改 UI Toolkit 处理输入的方式 生成其运行时事件。

有关更多信息,请参阅运行时事件系统。

其他资源

支持运行时 UI
配置运行时 UI