Unity3D :绑定 UXML 和 C# 脚本
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
绑定 UXML 和 C# 脚本
版本: 2021.3+
此示例演示如何使用 UXML 创建绑定和设置绑定路径,以及如何使用 C# 脚本调用该方法。Bind()
示例概述
本示例创建一个自定义编辑器窗口,其中包含绑定到任何游戏对象
在一个现场
.
您可以在此 GitHub 存储库中找到此示例创建的已完成文件。
先决条件
本指南适用于熟悉 Unity 编辑器的开发人员,用户界面
工具包和 C# 脚本。在开始之前,请熟悉以下内容:
- 可视化树
- 用户体验
bindingPath
Bind()
在 UXML 中定义绑定路径
定义视觉元素
以及 UXML 中的绑定路径。
- 使用任何模板在 Unity 中创建项目。
- 在你的项目窗口
,创建一个名为文件夹的文件夹来存储所有文件。bind-with-uxml-csharp
创建一个名为的 UI 文档,并将其内容替换为以下内容: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()
- 创建一个名为 的文件夹。
Editor
- 在编辑器文件夹中,创建名为 的 C# 脚本文件。
SimpleBindingExampleUXML.cs
将 的内容替换为以下内容: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.csbinding_example.uxml
检查员
.
测试绑定
- 在 Unity 中,选择“> UIToolkit示例”>“简单绑定示例 UXML”。此时将显示一个带有文本字段的自定义编辑器窗口。
- 选择场景中的任意游戏对象。游戏对象的名称将显示在编辑器窗口的文本字段中。
- 如果在文本字段中更改游戏对象的名称,则游戏对象的名称也会更改。
由3D建模学习工作室整理翻译,转载请注明出处!