unity3d
Använda Git-källkontroll med Unity
Sök…
Använda Git Large File Storage (LFS) med Unity
Förord
Git kan arbeta med utvecklingen av videospel. Men den viktigaste varning är att versionering av stora (> 5 MB) mediefiler kan vara ett problem på lång sikt eftersom din engagemangshistorik uppblåser - Git byggdes helt enkelt inte ursprungligen för att versionera binära filer.
Den stora nyheten är att sedan mitten av 2015 har GitHub släppt ett plugin för Git som heter Git LFS som direkt hanterar detta problem. Du kan nu enkelt och effektivt versionera stora binära filer!
Slutligen fokuseras denna dokumentation på de specifika krav och information som krävs för att säkerställa att ditt Git-liv fungerar bra med utvecklingen av videospel. Den här guiden täcker inte hur man använder Git själv.
Installera Git & Git-LFS
Du har ett antal alternativ tillgängliga för dig som utvecklare och det första valet är om du vill installera den centrala Git-kommandoraden eller låta en av de populära Git GUI-applikationerna ta itu med den åt dig.
Alternativ 1: Använd en Git GUI-applikation
Detta är verkligen en personlig preferens här eftersom det finns ganska många alternativ i fråga om Git GUI eller om man vill använda ett GUI alls. Du har ett antal applikationer att välja mellan, här är tre av de mer populära:
När du har installerat ditt val av applikation, google och följ instruktionerna för att säkerställa att det är inställt för Git-LFS. Vi hoppar över detta steg i den här guiden eftersom det är applikationsspecifikt.
Alternativ 2: Installera Git & Git-LFS
Det här är ganska enkelt - Installera Git . Sedan. Installera Git LFS .
Konfigurera Git Large File Storage i ditt projekt
Om du använder Git LFS-plugin för att ge bättre stöd för binära filer måste du ställa in några filtyper som ska hanteras av Git LFS. Lägg till nedan i din .gitattributes
fil i roten till ditt arkiv för att stödja vanliga binära filer som används i Unity-projekt:
# Image formats:
*.tga filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
# Audio formats:
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
# 3D model formats:
*.fbx filter=lfs diff=lfs merge=lfs -text
*.obj filter=lfs diff=lfs merge=lfs -text
# Unity formats:
*.sbsar filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
# Other binary formats
*.dll filter=lfs diff=lfs merge=lfs -text
Ställa in ett Git-arkiv för Unity
När man initialiserar ett Git-arkiv för enhetsutveckling, är det ett par saker som måste göras.
Enhet ignorera mappar
Inte allt ska versioneras i förvaret. Du kan lägga till mallen nedan till din .gitignore
fil i roten till ditt arkiv. Eller alternativt kan du kontrollera open source Unity .gitignore på GitHub och alternativt generera en med gitignore.io för enhet.
# Unity Generated
[Tt]emp/
[Ll]ibrary/
[Oo]bj/
# Unity3D Generated File On Crash Reports
sysinfo.txt
# Visual Studio / MonoDevelop Generated
ExportedObj/
obj/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
# OS Generated
desktop.ini
.DS_Store
.DS_Store?
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
För att lära dig mer om hur du konfigurerar en .gitignore-fil, kolla här .
Inställningar för Unity Project
Som standard installeras inte Unity-projekt för att stödja versioner korrekt.
- (Hoppa över detta steg i v4.5 och uppåt) Aktivera
External
alternativ iUnity → Preferences → Packages → Repository
. - Byt till
Visible Meta Files
iEdit → Project Settings → Editor → Version Control Mode
. - Växla till
Force Text
iEdit → Project Settings → Editor → Asset Serialization Mode
. - Spara scenen och projektet från
File
menyn.
Ytterligare konfiguration
En av de få stora irritationer som man har med att använda Git med Unity-projekt är att Git inte bryr sig om kataloger och glatt kommer att lämna tomma kataloger efter att ha tagit bort filer från dem. Unity kommer att skapa *.meta
filer för dessa kataloger och kan orsaka lite strid mellan teammedlemmarna när Git förbinder sig att lägga till och ta bort dessa metafiler.
Lägg till denna Git post- /.git/hooks/
mappen /.git/hooks/
för arkiv med Unity-projekt i dem. Efter någon Git-drag / sammanslagning kommer den att titta på vilka filer som har tagits bort, kontrollera om katalogen den fanns i är tom och i så fall ta bort den.
Scener och prefabar slås samman
Ett vanligt problem när du arbetar med Unity är när två eller flera utvecklare modifierar en Unity-scen eller prefab (* .unity-filer). Git vet inte hur de ska smälta dem korrekt ur rutan. Tack och lov distribuerade Unity-teamet ett verktyg som heter SmartMerge som gör enkel sammanslagning automatiskt. Det första du ska göra är att lägga till följande rader i din .git
eller .gitconfig
fil: (Windows: %USERPROFILE%\.gitconfig
, Linux / Mac OS X: ~/.gitconfig
)
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = '<path to UnityYAMLMerge>' merge -p "$BASE" "$REMOTE" "$LOCAL" "$MERGED"
På Windows är vägen till UnityYAMLMerge:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
eller
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
och på MacOSX :
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
När detta är gjort kommer mergetool att vara tillgängligt när konflikter uppstår under sammanslagning / omfasning. Glöm inte att köra git mergetool
manuellt för att utlösa UnityYAMLMerge.