unity-so-prefab-manager について
Unity で ScriptableObject のテンプレートと Prefab の実行時インスタンスを分ける Bridge パターンを案内するスキルです。API や YAML によるアセット作成、GUID の調査と修復も扱います。
主な機能
- 01テンプレートと実行時状態の分離
- 02Awake でインスタンス値を初期化
- 03Unity API によるアセット作成
- 04YAML による一括アセット生成
- 05GUID 参照の調査と修復
活用シーン
- 01共通テンプレートを使いつつ体力を個別管理
- 02少数または大量の ScriptableObject 作成
- 03Prefab に付いたスクリプト GUID の確認
- 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.mdnaming-conventions.mdyaml-templates.mdunity-so-prefab-manager/assets/code/DataEntity.cs.txtunity-so-prefab-manager/references/bridge-pattern.mdnaming-conventions.mdyaml-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 の遅延を回避します。
- ワークフロー:
- 既存の
.assetファイルを基に YAML テンプレートを作成します。 write_to_fileを使って.assetファイルをAssets/Data/に直接書き込みます。mcp_unityMCP_refresh_unity(scope="assets")を呼び出し、Unity に.metaファイルを強制的に生成させます。
- 既存の
2. YAML の直接操作(詳細なデバッグ)
API では迅速に処理できない「詳細な監査」には、ファイルを直接読み取って解析します。
- GUID の検証: Prefab 内で特定の
m_Script: {fileID: ..., guid: ...}を検索し、実際にどのスクリプトがアタッチされているか確認します。 - 参照の修復: プロジェクト全体で
grep_searchとreplace_file_contentを使い、すべてのファイルをエディターで開くことなく、壊れた GUID を置き換えます。
参考資料
- 詳しい実装方法とトラブルシューティングについては、references/bridge-pattern.md を参照してください。
- プロジェクト標準のフォルダー構成については、references/naming-conventions.md を参照してください。
- Unity YAML の標準的なボイラープレートについては、references/yaml-templates.md を参照してください。
コメント
Markdown 対応