Unity3D :绑定到 UXML 模板

推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生

绑定到 UXML 模板

版本: 2021.3+

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

示例概述

本示例创建一个资产菜单项。该菜单创建一个资产,其中包含三个绑定到对象属性的模板实例。GameSwitchGameSwitch

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

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

先决条件

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

  • 用户界面生成器
  • 可视化树
  • 用户体验
  • USS

创建游戏切换资产

创造脚本
定义结构和自定义资产以保存结构的属性。GameSwitchGameSwitch

  1. 使用任何模板在 Unity 中创建项目。
  2. 在你的项目窗口
    ,创建一个名为以存储所有文件的文件夹。bind-uxml-template

创建一个名为的 C# 脚本,并将其内容替换为以下内容:GameSwitch.cs

using System;

[Serializable]
public struct GameSwitch
{
    public string name;
    public bool enabled;
}

4. 创建一个名为的 C# 脚本,并将其内容替换为以下内容: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 模板,以及使用该模板的 UXML 文件。GameSwitch

  1. 创建一个名为的 UI 文档,并将其内容替换为以下内容: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. 在绑定 uxml 模板文件夹中,创建一个名为 的文件夹。Editor

3. 在“编辑器”文件夹中,创建一个名为的 UI 文档,并将其内容替换为以下内容: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>
  1. 注意:这是自定义编辑器的主要 UXML 文件。每个属性都通过 的属性绑定到 的实例。game_switch.uxmlbinding-pathInstance

创建资产菜单和资产

创建脚本以注册 的自定义编辑器。GameSwitchesAsset

创建一个名为的 C# 脚本,并将其内容替换为以下内容: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();
        }
    }
}

测试绑定

  1. 在 Unity 中,选择“资源”>“创建”>“UIToolkit示例”>“游戏开关”以在项目文件夹中创建新资源Assets
  2. 选择新创建的资产。这检查员
    显示绑定到 、 和 属性的切换和文本字段。GameSwitchesAsset.useLocalServerGameSwitchesAsset.showDebugMenuGameSwitchesAsset.showFPSCounter

3D建模学习工作室整理翻译,转载请注明出处!

上一篇:Unity3D :绑定到嵌套属性 (mvrlink.com)

下一篇:Unity3D :绑定属性更改时接收回调 (mvrlink.com)

NSDT场景编辑器 | NSDT 数字孪生 | GLTF在线编辑器 | 3D模型在线转换 | UnrealSynth虚幻合成数据生成器 | 3D模型自动纹理化工具
2023 power by nsdt©鄂ICP备2023000829号