美文网首页
Unity中的Git最佳实践

Unity中的Git最佳实践

作者: IT前沿技术分享 | 来源:发表于2023-12-03 17:31 被阅读0次

    对于Git管理的任何项目,需要注意的地方大多都是共通的,今天我们就来一起学一下使用Git管理Unity项目的一些最佳实践。

    image.png

    Git最佳实践

    在说Unity与Git之前,我们先来看一下一些Git的通用最佳实践是什么。

    提交相关的变化

    一次提交应该是相关联的修改。如果是修改了两个不同的BUG,应该分两次提交。小的commit可以让你的协作者更容易理解,并且一旦出现问题可以很容易回退版本。

    经常提交

    经常提交可以确保你的提交足够小,并且提交相关联的变化,还可以减少代码冲突。

    不要提交没做完的工作

    这不是说你要完成一个完整的功能才能提交,而是要将功能拆分,然后经常提交。不能让协作者拿到你的代码后出现编译错误、系统不能运行等情况。

    提交之前应该测试

    提交之前应该进行测试,不要让你的代码影响别人的工作。

    重视提交Message

    提交Message应该清楚地写明和本次提交相关的内容(不超过25个字)。如果需要填写更详细的内容,空一行后写下具体的提交信息。

    很多童鞋经常着急提交,Message经常写一些无关的字符来满足提交的需求,这种坏习惯总有一天会害了你自己。

    版本控制不是备份系统

    版本控制虽说可以备份你的项目,但是不要把Git当作一个备份的工具。不要将你本地的乱七八糟的文件都使用Git进行备份。记住Git是用来进行版本管理的,是用来跟踪管理这些文件的变化。

    多用分支

    分支是Git最强大的功能之一。你应该多使用分支来拓宽开发的工作流:新功能、BUG修复、新创意等等。

    团队内就工作流程达成一致

    Git给了你很多选择,比如划分几个分支,什么时候开辟新的分支,merge还是rebase等等。这些都应该基于你的项目进行选择,并且在团队中达成一致后严格执行。

    Unity中的Git最佳实践

    在理解并执行上述的Git最佳实践之后,我们再来看Git在Unity中有哪些特殊的地方。

    使用Git管理Unity项目一般流程如下:

    • 在托管平台(之前介绍过多个国内外的托管平台,也可以自建)上创建Git项目
    • 在本地Clone创建的项目
    • 创建Unity工程到该版本库目录中
    • 设置Unity工程的一些配置
    • 设置gitignore文件和LFS(Large File Storage, 大文件存储)的.gitarrtibutes文件
    • commit和push,在Git的保驾护航下开始愉快地开发Unity项目!

    配置Unity的文件属性

    为什么需要配置Unity的文件属性呢?这也是基于Git的一些原则:

    • Git无法合并二进制文件,尽量避免会发生变化的文件使用二进制格式
    • 一个Git版本库应该是一个完整的项目,需要包含项目可运行调试的所有代码、配置文件和资源。

    通常Unity中需要设置的内容有以下几项:

    设置Asset Serialization为Force Text

    上面提到了,Git无法处理二进制文件的合并,只能处理文本文件的合并。如果二进制文件出现了冲突,那只能选择一个文件保留,无法将两个文件进行合并。对于Unity中的文件,我们需要尽量避免这种情况。

    默认情况下,Unity的资产序列化模式是Mixed。

    image.png

    资产序列化有三种模式:

    • Mixed:混合模式,保持资产原来的序列化的模式,新的资产使用二进制的方式序列化。
    • Force Binary:强制二进制,如果不需要合并,可以使用二进制模式节省存储空间。如果一个项目只有你一个人开发,不会出现合并的情况,可以使用这个模式。
    • Force Text:强制文本模式。只要你的项目有多个人一起开发,就需要将资产序列化的模式设置为这个模式。

    设置Version Control为Meta Files

    Unity的Editor设置中,Version Control的Mode需要设置为Meta Files。 对于使用新版本Unity的童鞋,一般不需要进行额外设置,默认为Visible Meta Files,只需要检查一下即可。


    image.png

    一共有4种模式:

    • Hidden Meta Files:隐藏的Meta文件,即该文件的属性是隐藏的,在系统中如果不查看隐藏文件这些文件是看不到的。如果你不想看到这些Meta Files,你可以设置为该选项。
    • Visible Meta Files:可见的Meta文件。
    • Perforce:Unity内置的一种版本控制工具。
    • PlasticSCM:Unity内置的一种版本控制工具。

    什么是Meta文件? Meta文件在Unity中用来跟踪资产文件的一些信息,比如元数据、资产之间的关联等,是非常重要的一种数据,不能删除。删除后可能会丢失文件之间的关联信息。

    image.png

    在较旧版本的Unity中,还有一个Off的选项,选中这个选项时Unity不会生成meta文件,资产文件之间的关联都存储在临时文件中,使用版本控制管理时会造成关联丢失。

    使用Git时,一定要选中Meta Files这个选项。

    设置好Gitignore

    提前设置好gitignore文件可以防止将临时文件及不需要版本控制的文件提交到版本库中。

    对于Unity工程自动生成的文件夹,只有下面几个目录是需要加入版本控制的:

    • Assets
    • ProjectSettings
    • Packages

    其他Unity自动生成的文件和文件加不需要加入版本控制,但是需要注意将你自己创建的文件或者文件夹加入版本控制。

    Github中的Unity项目的gitignore文件是最好的初始模板: https://github.com/github/gitignore/blob/master/Unity.gitignore

    [Ll]ibrary/
    [Tt]emp/
    [Oo]bj/
    [Bb]uild/
    [Bb]uilds/
    Assets/AssetStoreTools* # Visual Studio cache directory .vs/ # Autogenerated VS/MD/Consulo solution and project files ExportedObj/
    .consulo/
    *.csproj
    *.unityproj
    *.sln
    *.suo
    *.tmp
    *.user
    *.userprefs
    *.pidb
    *.booproj
    *.svd
    *.pdb
    *.opendb # Unity3D generated meta files *.pidb.meta
    *.pdb.meta # Unity3D Generated File On Crash Reports sysinfo.txt # Builds *.apk
    *.unitypackage` 
    

    注意:gitignore文件可能随着项目的开发过程而发生变化,要注意根据项目的实际情况进行维护。

    大文件使用LFS

    项目中可能有很大的文件比如参考资料、视频、发布的程序等。这些尺寸很大,一旦修改版本库的容量就会快速增加。所以建议Unity中的大文件都使用LFS进行管理,下面是一个Unity中常见的.gitattributes文件的模板。

    # text files
    *.meta text eol=lf ProjectSettings/*.asset text
    
    # model files
    *.fbx filter=lfs diff=lfs merge=lfs -text
    *.FBX filter=lfs diff=lfs merge=lfs -text
    *.max filter=lfs diff=lfs merge=lfs -text
    *.MAX filter=lfs diff=lfs merge=lfs -text
    *.ma filter=lfs diff=lfs merge=lfs -text
    *.mb filter=lfs diff=lfs merge=lfs -text
    *.obj filter=lfs diff=lfs merge=lfs -text
    *.OBJ filter=lfs diff=lfs merge=lfs -text
    *.spm filter=lfs diff=lfs merge=lfs -text
    
    # texture files
    *.bmp filter=lfs diff=lfs merge=lfs -text
    *.BMP filter=lfs diff=lfs merge=lfs -text
    *.psd filter=lfs diff=lfs merge=lfs -text
    *.PSD filter=lfs diff=lfs merge=lfs -text
    *.jpg filter=lfs diff=lfs merge=lfs -text
    *.JPG filter=lfs diff=lfs merge=lfs -text
    *.png filter=lfs diff=lfs merge=lfs -text
    *.PNG filter=lfs diff=lfs merge=lfs -text
    *.tga filter=lfs diff=lfs merge=lfs -text
    *.TGA filter=lfs diff=lfs merge=lfs -text
    *.tif filter=lfs diff=lfs merge=lfs -text
    *.TIF filter=lfs diff=lfs merge=lfs -text
    *.tiff filter=lfs diff=lfs merge=lfs -text
    *.ttf filter=lfs diff=lfs merge=lfs -text
    *.svg filter=lfs diff=lfs merge=lfs -text
    *.gif filter=lfs diff=lfs merge=lfs -text
    *.exr filter=lfs diff=lfs merge=lfs -text
    *.hdr filter=lfs diff=lfs merge=lfs -text
    *.renderTexture filter=lfs diff=lfs merge=lfs -text
    
    # dll files
    *.dll filter=lfs diff=lfs merge=lfs -text
    *.DLL filter=lfs diff=lfs merge=lfs -text
    *.so filter=lfs diff=lfs merge=lfs -text
    *.mdb filter=lfs diff=lfs merge=lfs -text
    *.pdb filter=lfs diff=lfs merge=lfs -text
    
    # font files
    *.ttc filter=lfs diff=lfs merge=lfs -text
    *.TTC filter=lfs diff=lfs merge=lfs -text
    *.ttf filter=lfs diff=lfs merge=lfs -text
    *.TTF filter=lfs diff=lfs merge=lfs -text
    
    # bundle files
    *.bundle filter=lfs diff=lfs merge=lfs -text
    *.zip filter=lfs diff=lfs merge=lfs -text
    
    # config files
    **/Assets/**/*.asset filter=lfs diff=lfs merge=lfs -text
    
    # doc files
    *.pdf filter=lfs diff=lfs merge=lfs -text
    *.PDF  filter=lfs diff=lfs merge=lfs -text
    
    # video files
    *.mov filter=lfs diff=lfs merge=lfs -text
    *.mp4 filter=lfs diff=lfs merge=lfs -text
    *.ogv filter=lfs diff=lfs merge=lfs -text
    
    # audio files
    *.mp3 filter=lfs diff=lfs merge=lfs -text
    *.wav filter=lfs diff=lfs merge=lfs -text
    *.ogg filter=lfs diff=lfs merge=lfs -text` 
    

    尽量不将美术中间文件放到工程中

    在Unity项目的开发过程中经常会有比较大的文件:比如贴图的原始PSD文件,模型的原始max文件等。这些源文件一般情况会很大,尽量不要放到Git中进行管理。在版本库中存储的文件尽量是最终的图片或fbx格式的文件。

    注意:这条建议也并非绝对,有时候使用psd或max文件可能更合理,需要自行判断。

    总结

    在Unity项目中使用Git进行管理,需要注意以下流程:

    • 在托管平台上创建Git项目
    • 在本地Clone创建的项目
    • 创建Unity工程到该版本库目录中
    • 设置Unity工程的一些配置(Asset Serialization设置为Force Text)
    • 设置gitignore文件(参考Github提供的gitignore文件)和LFS的.gitattributes文件
    • commit和push,在Git的保驾护航下开始愉快地开发Unity项目!

    参考: https://learn.u3d.cn/tutorial/git-version-control?chapterId=64c490aa0e16060022136f1c

    相关文章

      网友评论

          本文标题:Unity中的Git最佳实践

          本文链接:https://www.haomeiwen.com/subject/azzkgdtx.html