mcpField
U
unity-so-prefab-manager

unity-so-prefab-manager

github.com/muharremtozan開発1765 回インストール22 週間前に更新
リポジトリ

unity-so-prefab-manager について

Unity で ScriptableObject のテンプレートと Prefab の実行時インスタンスを分ける Bridge パターンを案内するスキルです。API や YAML によるアセット作成、GUID の調査と修復も扱います。

主な機能

  1. 01テンプレートと実行時状態の分離
  2. 02Awake でインスタンス値を初期化
  3. 03Unity API によるアセット作成
  4. 04YAML による一括アセット生成
  5. 05GUID 参照の調査と修復

活用シーン

  1. 01共通テンプレートを使いつつ体力を個別管理
  2. 02少数または大量の ScriptableObject 作成
  3. 03Prefab に付いたスクリプト GUID の確認
  4. 04プロジェクト内の破損参照の修復

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/muharremtozan/unity-agent-skills --skill unity-so-prefab-manager

インストール後、Claude Code で/unity-so-prefab-managerを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
bridge-pattern.md
naming-conventions.md
yaml-templates.md
unity-so-prefab-manager/assets/code/
DataEntity.cs.txt
unity-so-prefab-manager/references/
bridge-pattern.md
naming-conventions.md
yaml-templates.md

詳細

Unity SO-Prefab マネージャー

このスキルは、データとロジックの間に厳密なモジュール式の「ブリッジ」パターンを適用します。

コアワークフロー:ブリッジパターン

同じユニット(例:4 体のロボット)の複数のインスタンスが、同じテンプレート(RobotSO)を共有しながら、実行時の値(体力、エネルギー)を個別に保持できるようにするには、次の手順に従います。

1. ScriptableObject を構成する(テンプレート)

SO には、オブジェクトの「理想的な」状態を定義する静的/読み取り専用のデータを含めます。

  • 例:maxHealth、baseSpeed、displayName。
2. MonoBehaviour を構成する(インスタンス)

Prefab 上のスクリプトには、実行時/変更可能なデータと SO への参照を含めます。

  • 例:currentHealth、activeBuffs。
3. ブリッジを初期化する

Awake() を使って、SO の値をローカルのインスタンス変数にコピーします。

[Header("Data Reference")]
[SerializeField] private RobotSO data;

[Header("Runtime State")]
private float currentHealth;

private void Awake() {
    if (data == null) {
        Debug.LogError($"[System] Fail: Missing SO data on {gameObject.name}");
        return;
    }
    // Initialize independent state
    currentHealth = data.MaxHealth;
    
    Debug.Log($"[{data.name}] Success: Initialized instance | Health: {currentHealth}");
}

高度な使い方

1. ファイルの作成:API 優先と YAML パワーモード
標準(1~10 ファイル)- Unity API を使用

ほとんどのタスクでは、mcp_unityMCP_manage_scriptable_object を使用します。GUID の整合性と .meta ファイルの即時利用を確保できるため、これが最も安全な方法です。

  • ワークフロー: Call manage_scriptable_object -> Apply Patches。
パフォーマンス(10 ファイル以上)- YAML を生成

大量のデータを一括で処理する場合(例:50 個のアイテムをインポートする場合)は、ファイルを直接書き込んで API の遅延を回避します。

  • ワークフロー:
    1. 既存の .asset ファイルを基に YAML テンプレートを作成します。
    2. write_to_file を使って .asset ファイルを Assets/Data/ に直接書き込みます。
    3. mcp_unityMCP_refresh_unity(scope="assets") を呼び出し、Unity に .meta ファイルを強制的に生成させます。
2. YAML の直接操作(詳細なデバッグ)

API では迅速に処理できない「詳細な監査」には、ファイルを直接読み取って解析します。

  • GUID の検証: Prefab 内で特定の m_Script: {fileID: ..., guid: ...} を検索し、実際にどのスクリプトがアタッチされているか確認します。
  • 参照の修復: プロジェクト全体で grep_search と replace_file_content を使い、すべてのファイルをエディターで開くことなく、壊れた GUID を置き換えます。

参考資料

コメント