Unity 的项目是可以用 git 和其他的常见 SCM 软件来做版本控制的,但在项目里面要做些设置。
-
新建项目后,在 Unity 编辑器里选择 Edit -> Project Settings -> Editor,在 Inspector 里面做以下设置:
- Version Control - 设置为 Visible Meta Files,这样 .meta 文件就可以添加到版本控制中。
- Asset Serialization - 设置为 Force Text,这样项目中像 prefab 和动画等文件会以纯文本格式保存,在看修改的 diff 时会比较好用。
-
建立
.gitignore
文件,在这里有一份可以直接拿来用的版本。其目的就是为了排除像Library
和Temp
这些 Unity 可以本地生成的东西。之后git init
来创建 git repo 就可以了。 -
建立
.gitattributes
文件。在 Windows 上默认 git 配置会自动将文本文件中的\n(LF)
转换成\r\n(CRLF)
,但是 Unity 保存文本文件的时候总是使用的\n
。这样有一个问题就是你修改了.meta
文件以后就算再变回原来的设置,git 里面也会显示其被修改过了。因为 git 认为他是文本所以把里面的换行改成了\r\n
,但是 Unity 保存资源的时候又写的是\n
,这样 git 又认为它变了。在项目根目录建立.gitattributes
文件如下:* text=auto # keep lf on unity files *.asset text eol=lf *.meta text eol=lf *.prefab text eol=lf *.unity text eol=lf
使用中比较要紧的一个问题是在提交新文件时,其对应生成的 .meta 文件一定要一起提交。如果你不这么做很多时候在运行时是没问题的,是因为 Unity 对这些没有找到 .meta 文件的资源会本地再创建一个。问题是 .meta 文件中有一个重要的东西是该资源的 UUID,Unity 用这个值来定位这个资源。如果两台机器上 .meta 文件不一样,会导致 Unity 找不到某个资源。