Unity3D :在没有绑定路径的情况下绑定
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
在没有绑定路径的情况下绑定
版本: 2021.3+
可以调用 BindProperty()
将元素直接绑定到对象,而不是使用绑定路径。此示例演示如何与 BindProperty()
绑定。SerializedProperty
示例概述
本示例创建一个自定义编辑器窗口,以更改游戏对象
.
您可以在此 GitHub 存储库中找到此示例创建的已完成文件。
先决条件
本指南适用于熟悉 Unity 编辑器的开发人员,用户界面
工具包和 C# 脚本。在开始之前,请熟悉以下内容:
BindProperty
绑定BindProperty()
在 C# 中创建一个带有文本字段的自定义编辑器窗口。查找游戏对象的 name 属性,并使用 BindProperty()
方法直接绑定到该属性。
- 在你的项目窗口
,创建一个名为用于存储文件的文件夹。bind-without-binding-path
- 在无绑定路径的绑定文件夹中,创建一个名为 的文件夹。
Editor
在“编辑器”文件夹中,创建一个名为的 C# 脚本,并将其内容替换为以下内容:SimpleBindingPropertyExample.cs
using UnityEditor;
using UnityEngine;
using UnityEditor.UIElements;
using UnityEngine.UIElements;
namespace UIToolkitExamples
{
public class SimpleBindingPropertyExample : EditorWindow
{
TextField m_ObjectNameBinding;
[MenuItem("Window/UIToolkitExamples/Simple Binding Property Example")]
public static void ShowDefaultWindow()
{
var wnd = GetWindow<SimpleBindingPropertyExample>();
wnd.titleContent = new GUIContent("Simple Binding Property");
}
public void CreateGUI()
{
m_ObjectNameBinding = new TextField("Object Name Binding");
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);
// Note: the "name" property of a GameObject is actually named "m_Name" in serialization.
SerializedProperty property = so.FindProperty("m_Name");
// Bind the property to the field directly
m_ObjectNameBinding.BindProperty(property);
}
else
{
// Unbind any binding from the field
m_ObjectNameBinding.Unbind();
}
}
}
}
测试绑定
- 在 Unity 中,选择“窗口> UIToolkit示例”>“简单绑定属性示例”。此时将显示一个带有文本字段的自定义编辑器窗口。
- 在现场
.游戏对象的名称将显示在编辑器窗口的文本字段中。如果在文本字段中更改游戏对象的名称,则游戏对象的名称也会更改。
由3D建模学习工作室整理翻译,转载请注明出处!