unity3d
Korzystanie z kontroli źródła Git w Unity
Szukaj…
Korzystanie z Git Large File Storage (LFS) z Unity
Przedmowa
Git może pracować z programowaniem gier wideo od razu po wyjęciu z pudełka. Jednak głównym zastrzeżeniem jest to, że wersjonowanie dużych (> 5 MB) plików multimedialnych może stanowić problem w dłuższej perspektywie, ponieważ historia zatwierdzeń się powiększa - Git po prostu nie był pierwotnie zbudowany do wersjonowania plików binarnych.
Wspaniałą wiadomością jest to, że od połowy 2015 roku GitHub wydał wtyczkę dla Git o nazwie Git LFS, która bezpośrednio rozwiązuje ten problem. Teraz możesz łatwo i wydajnie wersjonować duże pliki binarne!
Wreszcie, ta dokumentacja koncentruje się na konkretnych wymaganiach i informacjach niezbędnych do zapewnienia, że Twoje życie Git działa dobrze z tworzeniem gier wideo. Ten przewodnik nie obejmuje korzystania z samego Gita.
Instalowanie Git i Git-LFS
Jako programista masz do wyboru wiele opcji, a pierwszym wyborem jest to, czy zainstalować podstawowy wiersz polecenia Git, czy pozwolić jednej z popularnych aplikacji Git GUI sobie z tym poradzić.
Opcja 1: Użyj aplikacji Git GUI
Jest to naprawdę osobista preferencja, ponieważ istnieje wiele opcji w zakresie Git GUI lub tego, czy w ogóle używać GUI. Masz do wyboru wiele aplikacji, oto 3 z bardziej popularnych:
Po zainstalowaniu wybranej aplikacji przejdź do Google i postępuj zgodnie z instrukcjami, aby upewnić się, że jest ona skonfigurowana dla Git-LFS. Pominiemy ten krok w tym przewodniku, ponieważ jest on specyficzny dla aplikacji.
Opcja 2: zainstaluj Git i Git-LFS
To jest dość proste - zainstaluj Git . Następnie. Zainstaluj Git LFS .
Konfigurowanie magazynu dużych plików Git w projekcie
Jeśli używasz wtyczki Git LFS, aby zapewnić lepszą obsługę plików binarnych, musisz ustawić niektóre typy plików, które będą zarządzane przez Git LFS. Dodaj poniżej plik .gitattributes
w katalogu głównym repozytorium, aby obsługiwać popularne pliki binarne używane w projektach Unity:
# 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
Konfigurowanie repozytorium Git dla Unity
Podczas inicjowania repozytorium Git na potrzeby rozwoju Unity należy wykonać kilka czynności.
Unity Ignoruj foldery
Nie wszystko powinno być wersjonowane w repozytorium. Możesz dodać poniższy szablon do pliku .gitignore
w katalogu głównym repozytorium. Lub alternatywnie, możesz sprawdzić Openity Unity .gitignore na GitHub i alternatywnie wygenerować jeden za pomocą gitignore.io dla unity.
# 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
Aby dowiedzieć się więcej o tym, jak skonfigurować plik .gitignore, sprawdź tutaj .
Ustawienia projektu Unity
Domyślnie projekty Unity nie są skonfigurowane do prawidłowej obsługi wersjonowania.
- (Pomiń ten krok w wersji 4.5 lub nowszej) Włącz opcję
External
wUnity → Preferences → Packages → Repository
. - Przejdź do
Visible Meta Files
wEdit → Project Settings → Editor → Version Control Mode
. - Przełącz na
Force Text
wEdit → Project Settings → Editor → Asset Serialization Mode
. - Zapisz scenę i projekt z menu
File
.
Dodatkowa konfiguracja
Jedną z niewielu głównych niedogodności związanych z używaniem projektów Git z Unity jest to, że Git nie dba o katalogi i chętnie zostawia puste katalogi po usunięciu z nich plików. Unity utworzy pliki *.meta
dla tych katalogów i może spowodować bitwę między członkami zespołu, gdy Git zobowiązuje się do dodawania i usuwania tych plików meta.
Dodaj ten zaczep Git po scaleniu do folderu /.git/hooks/
dla repozytoriów z projektami Unity. Po każdym ściągnięciu / scaleniu Git, sprawdzi, jakie pliki zostały usunięte, sprawdzi, czy katalog, w którym istniał, jest pusty, a jeśli tak, usuń go.
Scalanie scen i prefabrykatów
Częstym problemem podczas pracy z Unity jest sytuacja, gdy 2 lub więcej programistów modyfikuje scenę lub prefabrykację Unity (pliki * .unity). Git nie wie, jak poprawnie połączyć je po wyjęciu z pudełka. Na szczęście zespół Unity wdrożył narzędzie o nazwie SmartMerge, które sprawia, że proste scalanie jest automatyczne. Pierwszą rzeczą do zrobienia jest dodanie następujących wierszy do pliku .git
lub .gitconfig
: (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"
W systemie Windows ścieżka do UnityYAMLMerge to:
C:\Program Files\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
lub
C:\Program Files (x86)\Unity\Editor\Data\Tools\UnityYAMLMerge.exe
i na MacOSX :
/Applications/Unity/Unity.app/Contents/Tools/UnityYAMLMerge
Po wykonaniu tej czynności narzędzie do łączenia będzie dostępne, gdy pojawią się konflikty podczas scalania / zmiany bazy. Nie zapomnij uruchomić git mergetool
ręcznie, aby uruchomić UnityYAMLMerge.