版本:Unity 6 (6000.0)
语言:英语
对运行时 UI 的支持
在游戏视图中渲染 UI

运行时 UI 入门

您可以通过以下步骤创建运行时 UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
参见 术语表
并将其显示在游戏视图中。

  1. 使用控件创建 UI 文档 (.uxml).
  2. 在场景中添加一个 UIDocument 游戏对象,并将 UXML 文件添加为其源资产.
  3. 创建 MonoBehaviours 来定义 UI 控件的行为.

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

先决条件

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

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

使用控件创建 UI 文档

使用标签、按钮和切换按钮创建 UI 文档。有关如何使用 UI 生成器或 UXML 添加 UI 控件的信息,请参阅 UI 工具包入门

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

  2. 创建名为 SimpleRuntimeUI.uxml 的 UI 文档,其中包含以下内容。

    <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>
    

设置场景

在 SampleScene 中创建一个 UIDocument 游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、相机、路径点等等。游戏对象的功能由附加到它的组件定义。 更多信息
参见 术语表
,并将 UI 文档添加为源资产。

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

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

定义 UI 控件的行为

要添加逻辑,请创建一个从 MonoBehaviour 派生的 C# 脚本,以访问 UI 文档组件引用的控件。

Unity 在 OnEnable 在组件上调用时加载 UI 文档组件的源 UXML。为了确保可视树正确加载,请在 OnEnable 方法中添加与控件交互的逻辑。

  1. 创建一个名为 SimpleRuntimeUI.cs 的 C# 脚本,其中包含以下内容。

    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 游戏对象的组件。

其他资源

对运行时 UI 的支持
在游戏视图中渲染 UI