关于 unity-ui-data-binding
面向 Unity UI Toolkit 开发者的 C# 数据绑定技能,使用 ViewModel 将游戏数据连接到界面,并根据属性变化自动同步显示。
主要功能
- 01BindableProperty 封装数据源
- 02采用 MVVM 分离数据与界面
- 03属性变化时同步 UI
- 04通过 C# 配置绑定
适用场景
- 01绑定生命值文本与血条
- 02将格式化的 ViewModel 数据呈现到 UI
- 03为输入控件配置双向绑定
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ muharremtozan/ unity-agent-skills --skill unity-ui-data-binding安装后在 Claude Code 中输入/unity-ui-data-binding确认已加载。
附带文件assets/code/BindableProperty.cs.txtassets/code/BindingExample.cs.txt
详细介绍
Unity UI Toolkit 数据绑定
使用现代高性能数据绑定,将游戏数据(模型)连接到界面(视图)。此技能利用 Unity 的 unity.properties 系统,无需通过“Update”循环逻辑更新 UI。
核心功能
- BindableProperty:使用
[CreateProperty]将值公开给 UI Toolkit 绑定引擎的包装类。 - MVVM(模型-视图-视图模型):通过视图模型中介者,将原始游戏数据与经过 UI 格式化的数据分离。
- 响应式同步:底层属性值发生变化时(或由引擎轮询时),UI 元素会自动更新。
- 基于 C# 的绑定:以编程方式设置复杂绑定,无需依赖 UI Builder 的检查器字段。
核心文件(最多 3 个)
BindableProperty.cs.txt:数据源的泛型属性包装类。BindingExample.cs.txt:实用示例,展示如何将金币显示和生命值条绑定到视图模型。
用法
1. 定义视图模型
初始化 BindableProperty 字段,使其返回模型中的格式化数据。
public BindableProperty<string> HealthText { get; }
HealthText = BindableProperty<string>.Bind(() => $"HP: {model.hp}/{model.maxHp}");
2. 设置数据源
将视图模型赋给根 VisualElement 的 dataSource 属性。
root.dataSource = myViewModel;
3. 建立绑定
在特定元素上使用 SetBinding,将其属性(文本、值、样式)关联到视图模型中的路径。
label.SetBinding("text", "HealthText.Value");
核心原则
显示内容始终使用单向绑定(ToTarget),仅在输入项(复选框、文本字段)中使用双向绑定。这样可以确保“事实来源”始终是模型。
评论
支持 Markdown