版本:Unity 6 (6000.0)
语言:英语
绑定示例
不使用绑定路径进行绑定

在 C# 脚本中使用绑定路径进行绑定

版本: 2021.3+

本示例演示如何在 C# 脚本中使用绑定路径进行绑定。

示例概述

本示例创建一个自定义编辑器窗口,用于更改 游戏对象Unity 场景中的基本对象,可以代表角色、道具、场景、摄像机、航路点等。游戏对象的功能由附加到它的组件定义。 更多信息
查看 术语表
的名称。

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

先决条件

本指南适用于熟悉 Unity 编辑器、UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三种 UI 系统。 更多信息
查看 术语表
工具包和 C# 脚本编写的开发人员。在开始之前,请熟悉以下内容

使用绑定路径进行绑定

在 C# 中创建一个带有 TextField 的自定义编辑器窗口。将绑定路径设置为游戏对象的名称属性,并显式调用 Bind() 方法。

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

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

  3. 在 **bind-with-binding-path** 文件夹中,创建一个名为 Editor 的文件夹。

  4. 在 **Editor** 文件夹中,创建一个名为 SimpleBindingExample.cs 的 C# 脚本,并将其内容替换为以下内容

    using UnityEditor;
    using UnityEngine;
    using UnityEditor.UIElements;
    using UnityEngine.UIElements;
    
    namespace UIToolkitExamples
    {
        public class SimpleBindingExample : EditorWindow
        {
            TextField m_ObjectNameBinding;
    
            [MenuItem("Window/UIToolkitExamples/Simple Binding Example")]
            public static void ShowDefaultWindow()
            {
                var wnd = GetWindow<SimpleBindingExample>();
                wnd.titleContent = new GUIContent("Simple Binding");
            }
    
            public void CreateGUI()
            {
                m_ObjectNameBinding = new TextField("Object Name Binding");
                // Note: the "name" property of a GameObject is "m_Name" in serialization.
                m_ObjectNameBinding.bindingPath = "m_Name";
                rootVisualElement.Add(m_ObjectNameBinding);
                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);
    
                    // Alternatively you can instead bind it to the TextField itself.
                    // m_ObjectNameBinding.Bind(so);
                }
                else
                {
                    // Unbind the object from the actual visual element that was bound.
                    rootVisualElement.Unbind();
                    // If you bound the TextField itself, you'd do this instead:
                    // m_ObjectNameBinding.Unbind();
    
                    // Clear the TextField after the binding is removed
                    m_ObjectNameBinding.value = "";
                }
            }
        }
    }
    

测试绑定

  1. 在 Unity 中,选择 **窗口** > **UIToolkitExamples** > **简单绑定示例**。将出现一个带有文本字段的自定义编辑器窗口。
  2. 在您的 场景场景包含游戏的环境和菜单。将每个唯一的场景文件视为一个唯一的关卡。在每个场景中,您放置环境、障碍物和装饰,本质上是在片段中设计和构建您的游戏。 更多信息
    查看 术语表
    中选择任何游戏对象。游戏对象的名称将显示在您的编辑器窗口的文本字段中。如果您在文本字段中更改游戏对象的名称,游戏对象的名称也会更改。

其他资源

绑定示例
不使用绑定路径进行绑定