Unity YAML 基础

什么是 Unity YAML?Scenes、Prefabs、fileID 和 GUID

Unity YAML 是 Unity 把场景、Prefab、材质和 ScriptableObject 等资源保存为文本的一种方式。它让 Git 可以看到变化,但也把 Unity 对象图拆成很多低层字段。

7 Wolves 2026 年 3 月 30 日 8 分钟阅读 Unity 工作流

Unity 为什么使用 YAML

文本序列化让资源可以进入版本控制、被 diff、被 merge,并在 PR 中被审查。相比二进制文件,YAML 至少能让团队看到发生了什么变化。

对象身份如何编码

Unity YAML 中常见的 `!u!` 是 Class ID,`&` 后面的数字是 fileID。它们一起标识文件内的对象,例如 GameObject、Transform、Camera 或 MonoBehaviour。

--- !u!1 &1001
GameObject:
  m_Name: Player
--- !u!4 &1002
Transform:
  m_GameObject: {fileID: 1001}

本地引用和跨文件引用

同一文件内通常使用 fileID;跨资源引用会结合 GUID 和 fileID。GUID 来自 `.meta` 文件,所以丢失或重建 meta 文件会破坏引用身份。

团队真正需要什么

Raw YAML 可以作为底层证据,但团队审查需要更高层的信息:对象名称、层级路径、组件类型、引用目标和 Prefab override 来源。

FAQ

什么是 Unity YAML?

它是 Unity 对资源进行文本序列化后的格式,用来保存场景、Prefab、材质和其他资源。

Unity YAML 是标准 YAML 吗?

它使用 YAML 风格,但包含 Unity 特有的 Class ID、fileID、GUID 和序列化规则。

fileID 和 GUID 有什么区别?

fileID 标识文件内对象,GUID 标识资源文件本身,通常存储在 `.meta` 文件中。

总结

Unity YAML 是 Unity 把场景、Prefab、材质和 ScriptableObject 等资源保存为文本的一种方式。它让 Git 可以看到变化,但也把 Unity 对象图拆成很多低层字段。

Summary

文件内

fileID 连接同一资源中的对象。

文件间

GUID + fileID 指向外部资源或脚本。

审查难点

文本格式隐藏了 Unity 层级和语义。

Next step

在真实 Unity 资源上审查这些变更

如果你的团队正在处理 Unity scene、prefab、material 或 YAML asset 的合并风险,可以查看 MergeSight 如何把 raw YAML 转成可审查的 Unity 上下文。