Version: 6000.3
语言: 中文
绑定到嵌套属性
在绑定属性更改时接收回调

绑定到UXML模板

版本: 2021.3+

此示例演示了如何使用UXML模板设置绑定路径。

示例概述

此示例创建资产菜单项。菜单会创建一个GameSwitch资产,其中包含三个模板实例,这些实例绑定到GameSwitch对象。

GameSwitch 检查器的预览
GameSwitch 检查器的预览

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

先决条件

本指南适用于熟悉 Unity 编辑器、UI 工具包和 C# 脚本的开发人员。在开始之前,请熟悉以下内容:

创建GameSwitch资产

创造脚本一段代码,允许您创建自己的组件、触发游戏事件、随时间修改组件属性以及以您喜欢的任何方式响应用户输入。更多信息
请参阅术语表
定义GameSwitchstruct 和自定义资源来保存GameSwitch结构。

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

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

  3. 创建名为GameSwitch.cs并将其内容替换为以下内容:

    using System;
    
    [Serializable]
    public struct GameSwitch
    {
        public string name;
        public bool enabled;
    }
    
  4. 创建名为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模板和文件

创建一个UXML模板,你可以将其用于每个GameSwitchstruct实例,以及使用模板的UXML文件。

  1. 创建名为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>
    
  2. bind-uxml-template 文件夹中,创建一个名为Editor.

  3. 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.

  1. 创建名为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();
            }
        }
    }
    
  2. 检查器一个 Unity 窗口,显示有关当前选定游戏对象、资产或项目设置的信息,允许您检查和编辑值。更多信息
    请参阅术语表
    窗口GameSwitchesEditor.cs,将game_switches_editor.uxml文件添加到“可视化树资产”字段。

测试绑定

  1. 在 Unity 中,选择 Assets > Create > UIToolkitExamples > GameSwitches,在项目的Assets文件夹。
  2. 选择新创建的资产。检查器显示绑定到GameSwitchesAsset.useLocalServer,GameSwitchesAsset.showDebugMenuGameSwitchesAsset.showFPSCounter性能。

其他资源

绑定到嵌套属性
在绑定属性更改时接收回调