Skip to main content

unity-prefab-source-editing

在不启动或连接 Unity 时,直接读取、验证、比较和精确修改文本序列化的 Prefab YAML。用于源码、fileID 字段、序列化引用与无损往返检查;不替代需要 Unity 导入或运行验证的视觉制作。

インストールへ移動

ソース情報

リポジトリ
vb2250158/GameDevelopmentSkills
ソースの最終更新活動
2026年9月7日 06:23
検出された SKILL.md の言語
中国語
スター
0
フォーク
0

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

ファイルエクスプローラー
6 ファイル

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
unity-prefab-source-editing
description
在不启动或连接 Unity 时,直接读取、验证、比较和精确修改文本序列化的 Prefab YAML。用于源码、fileID 字段、序列化引用与无损往返检查;不替代需要 Unity 导入或运行验证的视觉制作。
# Unity Prefab 源文件编辑 使用 `socialpoint-labs/unity-yaml-parser` 的可维护下游,直接处理文本序列化的 Unity `.prefab`。工具不启动也不连接 Unity。 ## 本机依赖 - 下游仓库:优先使用环境变量 `UNITY_YAML_PARSER_REPO`,否则使用当前用户目录下的 `.local/share/unity-yaml-parser`。安装和调用使用同一规则。 - `origin`:`vb2250158/unity-yaml-parser` - `upstream`:`socialpoint-labs/unity-yaml-parser` - Python:仓库内 `.venv`,以 editable 模式安装;修改下游源码后立即生效。 - 统一入口:`scripts/invoke-unity-prefab-yaml.ps1` 需要 Git、PowerShell 和带 `py` 启动器的 Python 3.11。仓库或环境缺失时,在用户授权安装依赖后运行 `scripts/install-unity-yaml-parser.ps1`。安装脚本不自动 pull,也不覆盖已有本地修改。指定 `-TargetPath` 时,后续调用须把 `UNITY_YAML_PARSER_REPO` 设为同一路径;只需当前进程变量,不必写永久环境变量。 ## 适用范围 - 按 `fileID` 查看对象类型、字段和值。 - 修改已存在的标量、映射或列表元素。 - 写入前生成完整 diff,不连接 Unity。 - 检查解析结果、重复 anchor 和缺失的本地 `fileID` 引用。 - 检查目标文件经过解析和重新序列化后是否字节一致。 新增或删除 GameObject、Component、YAML 文档块、嵌套 Prefab 或脚本组件时,不把普通字段修改当作安全结构编辑。需要直接改结构时,先读取 [references/format-and-safety.md](references/format-and-safety.md),建立并验证完整 `fileID` 关系。 ## 写入流程 1. 确认目标是文本 YAML,且用户没有在 Unity 中未保存地编辑同一 Prefab。 2. 按目标项目要求完成任务归属和版本控制状态检查;不把某个项目的发布或数据规则应用到其它项目。 3. 运行 `roundtrip`。只有 `byteIdentical=true` 才进入普通字段写入。 4. 用 `inspect` 和 `get` 确认精确 `fileID`、类型和字段路径。 5. 运行不带 `--write` 的 `set`,检查完整 unified diff。 6. 只在用户已授权该目标修改、diff 没有无关变化时,加 `--write --ack-source-edit`。 7. 运行 `validate`、`roundtrip` 和版本控制 diff。视觉、序列化引用或运行行为仍按项目要求在 Unity/目标包验证。 写入备份默认放在系统临时目录的 `unity-prefab-source-editing-backups`,不能在 `Assets` 内生成 `.bak` 文件。 ## 命令 ```powershell $tool = "<实际技能目录>\scripts\invoke-unity-prefab-yaml.ps1" & $tool roundtrip "C:\Path\To\Foo.prefab" & $tool inspect "C:\Path\To\Foo.prefab" --class-name RectTransform & $tool get "C:\Path\To\Foo.prefab" --anchor 224123456789 --field "m_SizeDelta.x" # 默认只输出 diff & $tool set "C:\Path\To\Foo.prefab" ` --anchor 224123456789 ` --field "m_SizeDelta.x" ` --value "320" # 确认 diff 后写入 & $tool set "C:\Path\To\Foo.prefab" ` --anchor 224123456789 ` --field "m_SizeDelta.x" ` --value "320" ` --write --ack-source-edit & $tool validate "C:\Path\To\Foo.prefab" ``` 复杂值使用 JSON: ```powershell & $tool set "C:\Path\To\Foo.prefab" ` --anchor 224123456789 ` --field "m_SizeDelta" ` --value-json '{"x":"320","y":"180"}' ``` 修改 `m_Component`、`m_Children`、`m_Father`、`fileID`、`guid` 等结构或引用字段时,CLI 会拒绝;明确完成关系审计后才能增加 `--allow-structural`。 ## 已知限制 - 上游明确说明,多行单引号或双引号字符串的换行格式可能与 Unity 不完全一致;`roundtrip` 不一致时停止写入。 - 该工具只证明源文件解析、目标 diff 和基础引用关系;不能证明 Unity 导入、组件类型、Prefab Variant 覆盖、视觉或运行结果。 - 不直接编辑二进制资源,不处理未启用 Force Text 的 Prefab。
GitHubで見る