在Unity 3D中使用Git源代码控制的最佳实践是什么,特别是在处理Unity 3D项目的二进制性质时?请描述工作流程,在.gitignore中包含哪些路径,应该在Unity和/或项目中设置什么设置,以及任何其他应该注意的特殊事情。
注意:我知道使用资产服务器是unity推荐的方式,但出于各种原因,我想使用Git。请不要回答,状态或争论,我应该只是使用资产服务器。资产服务器真的不是我的选择。
在Unity 3D中使用Git源代码控制的最佳实践是什么,特别是在处理Unity 3D项目的二进制性质时?请描述工作流程,在.gitignore中包含哪些路径,应该在Unity和/或项目中设置什么设置,以及任何其他应该注意的特殊事情。
注意:我知道使用资产服务器是unity推荐的方式,但出于各种原因,我想使用Git。请不要回答,状态或争论,我应该只是使用资产服务器。资产服务器真的不是我的选择。
当前回答
只有Assets和ProjectSettings文件夹需要置于git版本控制之下。
你可以做一个这样的gitignore。
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs
# Mac
.DS_Store
*.swp
*.swo
Thumbs.db
Thumbs.db.meta
.vs/
其他回答
我和我的朋友在72小时的游戏jam中尝试过这种方法,请注意他们不知道GIT。
首先,我在[GitHub][1](私人回购现在是免费的)与预定义的.gitignore统一模板创建空回购,它应该与此相同:
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore
#
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Mm]emoryCaptures/
# Asset meta data should only be ignored when the corresponding asset is also ignored
!/[Aa]ssets/**/*.meta
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
[Aa]ssets/Plugins/Editor/JetBrains*
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Builds
*.apk
*.unitypackage
# Crashlytics generated file
crashlytics-build.properties
Then I've created a main scene, this scene shouldn't be modified by any individual while they are development, It should be the demo scene for all dev and artists in the team to test the latest features in game. First of all any new feature should be in a separate branch from main, also each team member has his own scene that he use it for testing and development. once everything is good he/she made a PR reviewed by other members. If the merged feature is complete then we add it to the main scene so that all other members see the impact and the progress.
关于美术文件,最好是通过精灵文件的变化来避免冲突,并将主要精灵替换为pr中完全调整过的新精灵。 [1]: https://github.com/
除此之外,在Unity中使用git lfs也是很理想的。自从它问世以来,我一直在使用它,我没有遇到任何麻烦。
您需要将这个.gitattributes添加到.gitignore文件旁边
*.cs diff=csharp text
*.cginc text
*.shader text
*.mat merge=unityyamlmerge eol=lf
*.anim merge=unityyamlmerge eol=lf
*.unity merge=unityyamlmerge eol=lf
*.prefab merge=unityyamlmerge eol=lf
*.physicsMaterial2D merge=unityyamlmerge eol=lf
*.physicsMaterial merge=unityyamlmerge eol=lf
*.asset merge=unityyamlmerge eol=lf
*.meta merge=unityyamlmerge eol=lf
*.controller merge=unityyamlmerge eol=lf
*.a filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.exr filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
*.FBX filter=lfs diff=lfs merge=lfs -text
*.rns filter=lfs diff=lfs merge=lfs -text
*.reason filter=lfs diff=lfs merge=lfs -text
*.lxo filter=lfs diff=lfs merge=lfs -text
这是我的滚动文件列表。如果使用未列出的其他二进制文件,请添加它们。
我也有文件配置使用yamlmerge,你需要设置这个。你可以在这里阅读:http://docs.unity3d.com/Manual/SmartMerge.html
什么是GIT?
Git是一个免费的开源分布式版本控制系统(SCM),由Linus Torvalds于2005年(Linux操作系统的创始人)开发。它的创建是为了控制从小到大的项目的速度和效率。谷歌、Facebook、微软等领先公司每天都在使用GIT。
如果你想了解更多关于GIT的知识,请查看这个快速教程,
首先,确保已经设置好Git环境。您需要设置本地环境和Git存储库(我更喜欢Github.com)。
GIT客户端应用程序Mac/Windows
对于GIT gui客户端应用程序,我建议你去Github.com,
GitHub是一个可以与朋友、同事、同学和完全陌生的人分享代码的地方。超过500万人使用GitHub一起创建令人惊叹的东西。
Unity3d设置
你需要做这些设置
切换到“编辑→项目设置→编辑器→版本控制模式”中的“可见元文件”。
在Unity中启用外部选项→Preferences→Packages→Repository
在“编辑→项目设置→编辑器→资产序列化模式”中切换到“强制文本”。
来源: 使用Git与3D游戏源代码控制
只有Assets和ProjectSettings文件夹需要置于git版本控制之下。
你可以做一个这样的gitignore。
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.userprefs
# Mac
.DS_Store
*.swp
*.swo
Thumbs.db
Thumbs.db.meta
.vs/
我们现在有无缝集成到unity与Github到unity扩展… https://unity.github.com/
新的GitHub for Unity扩展带来了GitHub工作流和更多的Unity,提供支持大文件与Git LFS和文件锁定。
在撰写本文时,该项目仍处于alpha阶段,但仍可用于个人项目。