mcpField
U
unity-so-prefab-manager

unity-so-prefab-manager

github.com/muharremtozan开发1765 次安装22 周前更新
代码仓库

关于 unity-so-prefab-manager

为 Unity 项目提供 ScriptableObject 与 Prefab 实例的桥接模式指导,适合管理共享模板和独立运行时状态。还涵盖批量创建资源及 YAML 深度检查与修复。

主要功能

  1. 01分离静态模板与运行时状态
  2. 02通过 Awake 初始化实例数据
  3. 03使用 Unity API 创建资源
  4. 04批量生成 YAML 资源
  5. 05检查并修复 GUID 引用

适用场景

  1. 01多个单位共享模板但保留独立生命值
  2. 02创建少量或大量 ScriptableObject 资源
  3. 03排查 Prefab 中脚本 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 Manager

此技能强制在数据与逻辑之间采用严格模块化的“Bridge”模式。

核心工作流:Bridge 模式

为确保同一单元的多个实例(例如 4 个机器人)在共享同一模板(RobotSO)的同时,拥有独立的运行时数值(生命值、能量),请按以下步骤操作:

1. 构建 ScriptableObject(模板)

SO 应包含定义对象“理想”状态的静态/只读数据。

  • 示例:maxHealth、baseSpeed、displayName。
2. 构建 MonoBehaviour(实例)

Prefab 上的脚本应包含运行时/可变数据以及对 SO 的引用。

  • 示例:currentHealth、activeBuffs。
3. 初始化 Bridge

使用 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,无需逐个打开 Editor。

参考资料

评论

支持 Markdown