版本: 2021.3+
此示例演示如何使用 UXML 模板设置绑定路径。
此示例创建了一个资源菜单项。该菜单创建一个GameSwitch
资源,其中包含三个模板实例,这些实例绑定到GameSwitch
对象的属性。
您可以在此GitHub 存储库中找到此示例创建的完整文件。
本指南适用于熟悉 Unity 编辑器、UI(用户界面) 允许用户与您的应用程序交互。Unity 目前支持三个 UI 系统。 更多信息
参见词汇表 工具包和 C# 脚本的开发者。在开始之前,请熟悉以下内容
创建脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性并以任何您喜欢的方式响应用户输入。 更多信息
参见词汇表以定义GameSwitch
结构体和一个自定义资源以保存GameSwitch
结构体的属性。
在 Unity 中使用任何模板创建一个项目。
在您的项目窗口一个显示您的Assets
文件夹内容(项目选项卡)的窗口 更多信息
参见词汇表中,创建一个名为bind-uxml-template
的文件夹以存储所有文件。
创建一个名为GameSwitch.cs
的 C# 脚本,并将其内容替换为以下内容
using System;
[Serializable]
public struct GameSwitch
{
public string name;
public bool enabled;
}
创建一个名为GameSwitchesAsset.cs
的 C# 脚本,并将其内容替换为以下内容
using UnityEngine;
[CreateAssetMenu(menuName = "UIToolkitExamples/GameSwitches")]
public class GameSwitchesAsset : ScriptableObject
{
public GameSwitch useLocalServer;
public GameSwitch showDebugMenu;
public GameSwitch showFPSCounter;
// Use the Reset function to provide default values
public void Reset()
{
useLocalServer = new GameSwitch() { name = "Use Local Server", enabled = false };
showDebugMenu = new GameSwitch() { name = "Show Debug Menu", enabled = false };
showFPSCounter = new GameSwitch() { name = "Show FPS Counter", enabled = true };
}
}
创建一个 UXML 模板,您可以将其用于每个GameSwitch
结构体实例,以及一个使用该模板的 UXML 文件。
创建一个名为game_switch.uxml
的 UI 文档,并将其内容替换为以下内容
<UXML xmlns="UnityEngine.UIElements" xmlns:ue="UnityEditor.UIElements">
<Box style="flex-direction: row;">
<Toggle binding-path="enabled" />
<TextField binding-path="name" readonly="true" style="flex-grow: 1;"/>
</Box>
</UXML>
在**bind-uxml-template**文件夹中,创建一个名为Editor
的文件夹。
在**Editor**文件夹中,创建一个名为game_switches_editor.uxml
的 UI 文档,并将其内容替换为以下内容
<UXML xmlns="UnityEngine.UIElements" xmlns:ue="UnityEditor.UIElements">
<Template name="switch" src="../game_switch.uxml"/>
<Instance template="switch" binding-path="useLocalServer" />
<Instance template="switch" binding-path="showDebugMenu" />
<Instance template="switch" binding-path="showFPSCounter" />
</UXML>
注意:这是自定义编辑器的主要 UXML 文件。每个属性都通过Instance
的binding-path
属性绑定到game_switch.uxml
的一个实例。
创建一个脚本以注册GameSwitchesAsset
的自定义编辑器。
创建一个名为GameSwitchesEditor.cs
的 C# 脚本,并将其内容替换为以下内容
using UnityEditor;
using UnityEngine;
using UnityEngine.UIElements;
namespace UIToolkitExamples
{
[CustomEditor(typeof(GameSwitchesAsset))]
public class GameSwitchesEditor : Editor
{
[SerializeField]
VisualTreeAsset visualTreeAsset;
public override VisualElement CreateInspectorGUI()
{
return visualTreeAsset.CloneTree();
}
}
}
在GameSwitchesEditor.cs
的检查器一个 Unity 窗口,显示有关当前选定的 GameObject、资源或项目设置的信息,允许您检查和编辑值。 更多信息
参见词汇表窗口中,将game_switches_editor.uxml
文件分配给**视觉树资源**字段。
Assets
文件夹中创建一个新资源。GameSwitchesAsset.useLocalServer
、GameSwitchesAsset.showDebugMenu
和GameSwitchesAsset.showFPSCounter
属性。