Version: 6000.3
语言: 中文
不带绑定路径的绑定
使用检查器创建绑定

使用 UXML 和 C# 脚本绑定

版本: 2021.3+

此示例演示了如何使用 UXML 创建绑定并设置绑定路径,并调用Bind()方法与 C# 脚本。

示例概述

此示例创建一个自定义编辑器窗口,其中包含一个 TextField,该 TextField 绑定到任何游戏对象Unity 场景中的基本对象,可以表示角色、道具、风景、相机、航路点等。游戏对象的功能由附加到它的组件定义。更多信息
请参阅术语表
场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个独特的关卡。在每个场景中,你放置你的环境、障碍物和装饰品,基本上是将你的游戏设计和构建成碎片。更多信息
请参阅术语表
.

显示一个 Unity 编辑器窗口,其中包含一个自定义字段,用于更改游戏对象的名称。
显示一个 Unity 编辑器窗口,其中包含一个自定义字段,用于更改游戏对象的名称。

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

先决条件

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

在UXL中定义绑定路径

定义视觉元素实例化或派生自 C# 的可视化树的节点VisualElement类。您可以设置外观样式、定义行为并将其作为 UI 的一部分显示在屏幕上。更多信息
请参阅术语表
以及 UXML 中的绑定路径。

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

  2. 在您的项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
    术语表中查看
    ,创建一个名为bind-with-uxml-csharp文件夹来存储您的所有文件。

  3. 创建名为binding_example.uxml并将其内容替换为以下内容:

    <UXML xmlns:ui="UnityEngine.UIElements">
        <ui:VisualElement name="top-element">
            <ui:Label name="top-label" text="UXML-Defined Simple Binding"/>
            <ui:TextField name="GameObjectName" label="Name" text="" binding-path="m_Name"/>
        </ui:VisualElement>
    </UXML>
    

在 C 中创建绑定#

在 C# 脚本中创建绑定,并显式调用Bind()方法。

  1. 创建一个名为Editor.

  2. Editor 文件夹中,创建一个名为SimpleBindingExampleUXML.cs.

  3. 替换SimpleBindingExampleUXML.cs替换为以下内容:

    using UnityEditor;
    using UnityEngine;
    using UnityEditor.UIElements;
    using UnityEngine.UIElements;
    
    namespace UIToolkitExamples
    {
        public class SimpleBindingExampleUXML : EditorWindow
        {
            [SerializeField]
            VisualTreeAsset visualTree;
    
            [MenuItem("Window/UIToolkitExamples/Simple Binding Example UXML")]
            public static void ShowDefaultWindow()
            {
                var wnd = GetWindow<SimpleBindingExampleUXML>();
                wnd.titleContent = new GUIContent("Simple Binding UXML");
            }
    
            public void CreateGUI()
            {
                visualTree.CloneTree(rootVisualElement);
                OnSelectionChange();
            }
    
            public void OnSelectionChange()
            {
                GameObject selectedObject = Selection.activeObject as GameObject;
                if (selectedObject != null)
                {
                    // Create the SerializedObject from the current selection
                    SerializedObject so = new SerializedObject(selectedObject);
                    // Bind it to the root of the hierarchy. It will find the right object to bind to.
                    rootVisualElement.Bind(so);
                }
                else
                {
                    // Unbind the object from the actual visual element
                    rootVisualElement.Unbind();
    
                    // Clear the TextField after the binding is removed
                    var textField = rootVisualElement.Q<TextField>("GameObjectName");
                    if (textField != null)
                    {
                        textField.value = string.Empty;
                    }
                }
            }
        }
    }
    
  4. 在“项目”窗口中,选择SimpleBindingExampleUXML.cs并拖动binding_example.uxml到 Visual Tree 字段检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    .

测试绑定

  1. 在 Unity 中,选择 窗口 > UIToolkitExamples > 简单绑定示例 UXML。将出现一个带有文本字段的自定义编辑器窗口。
  2. 选择场景中的任何游戏对象。游戏对象的名称将显示在编辑器窗口的文本字段中。
  3. 如果您在文本字段中更改游戏对象的名称,则游戏对象的名称也会更改。

其他资源

不带绑定路径的绑定
使用检查器创建绑定