Skip to content

Instantly share code, notes, and snippets.

@yubaoliu
Created October 16, 2017 00:40
Show Gist options
  • Save yubaoliu/b6767dc37e1b18aa311bf65581431959 to your computer and use it in GitHub Desktop.
Save yubaoliu/b6767dc37e1b18aa311bf65581431959 to your computer and use it in GitHub Desktop.
Unity3D 项目用 git 做版本控制
新建项目后,在 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 找不到某个资源。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment