包含此页的版本:
不含此页的版本:
版本: 2021.3+
此示例演示了如何使用UXML模板设置绑定路径。
此示例创建资产菜单项。菜单会创建一个GameSwitch资产,其中包含三个模板实例,这些实例绑定到GameSwitch对象。
您可以在此 GitHub 存储库中找到此示例创建的已完成文件。
本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发人员。在开始之前,请熟悉以下内容:
创造脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表定义GameSwitchstruct 和自定义资源来保存GameSwitch结构。
使用任何模板在 Unity 中创建项目。
在您的项目窗口一个窗口,显示您的内容Assets文件夹(项目选项卡)更多信息
在术语表中查看,创建一个名为bind-uxml-template以存储您的所有文件。
创建名为GameSwitch.cs并将其内容替换为以下内容:
using System;
[Serializable]
public struct GameSwitch
{
public string name;
public bool enabled;
}
创建名为GameSwitchesAsset.cs并将其内容替换为以下内容:
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模板,你可以将其用于每个GameSwitchstruct实例,以及使用模板的UXML文件。
创建名为game_switch.uxml并将其内容替换为以下内容:
<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并将其内容替换为以下内容:
<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文件。每个属性都绑定到game_switch.uxml通过binding-path属性Instance.
创建脚本以注册自定义编辑器GameSwitchesAsset.
创建名为GameSwitchesEditor.cs并将其内容替换为以下内容:
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();
}
}
}
在检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
请参阅术语表窗口GameSwitchesEditor.cs,将game_switches_editor.uxml文件添加到“可视化树资产”字段。
Assets文件夹。GameSwitchesAsset.useLocalServer,GameSwitchesAsset.showDebugMenu和GameSwitchesAsset.showFPSCounter性能。