unity-ui-data-binding について
Unity UI Toolkit 向けの C# データバインディングスキルです。ViewModel を介してゲームデータと UI を結び、プロパティの変更に応じて表示を同期します。
主な機能
- 01BindableProperty によるデータソースのラップ
- 02MVVM によるデータと UI の分離
- 03プロパティ変更時の UI 同期
- 04C# によるバインディング設定
活用シーン
- 01HP テキストとバーの連携
- 02整形した ViewModel データの表示
- 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 システムを活用し、UI 更新のための「Update」ループ処理をなくします。
主な機能
- 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 対応