572 Stimmen

Wie verwendet man Git für Unity3D Quellcode-Verwaltung?

Was sind bewährte Verfahren für die Verwendung von Git Quellcodeverwaltung mit Unity 3D, insbesondere im Umgang mit der binären Natur von Unity 3D Projekten? Bitte beschreiben Sie den Workflow, welche Pfade in .gitignore enthalten sein sollten, welche Einstellungen in Unity und/oder im Projekt vorgenommen werden sollten und alle anderen besonderen Dinge, die beachtet werden sollten.

Hinweis: Mir ist bewusst, dass die Verwendung des Asset Servers der von Unity empfohlene Weg ist, aber ich würde aus verschiedenen Gründen gerne Git verwenden. Bitte keine Antworten, die behaupten oder argumentieren, dass ich einfach den Asset Server verwenden sollte. Der Asset Server ist für mich wirklich keine Option.

0voto

Saiansh Singh Punkte 440

Ich schlage vor, dass du eine .gitignore-Datei erstellst, die alles außer dem Assets-Ordner enthält (alle anderen Dateien, die sich originär in einem Unity-Projekt befinden). Anschließend solltest du alle deine Spielprojekte in einem Ordner platzieren. Danach solltest du die .gitignore in jedem einzelnen Projektordner für deine Spiele duplizieren. Dadurch werden Bibliotheken und unnötige Ordner in deinen Projekten außer den Assets ausgeschlossen. Wenn du Projekte hast, die du nicht möchtest, lege sie in eine neue .gitignore-Datei, die sich dort befindet, wo deine Spielprojekte gespeichert sind. Hinweis: Du kannst mehrere .gitignore-Dateien haben und .gitignore basiert auf relativen Pfaden. Ich hoffe, das hat geholfen!

0voto

Mohammed Yousri Punkte 49

Ich habe diesen Ansatz mit meinem Freund bei einem 72-Stunden-Spielmarathon ausprobiert, bitte beachten Sie, dass er nicht mit GIT vertraut war.

Zuerst erstelle ich ein leeres Repo in [GitHub][1] (private Repositories sind jetzt kostenlos) mit der vordefinierten .gitignore Unity-Vorlage, die sollte wie folgt aussehen:

# Diese .gitignore-Datei sollte im Stammverzeichnis Ihres Unity-Projektordners platziert werden
#
# Holen Sie sich das neueste unter https://github.com/github/gitignore/blob/master/Unity.gitignore
#
[Ll]ibrary/
[Tt]emp/
[Oo]bj/
[Bb]uild/
[Bb]uilds/
[Ll]ogs/
[Mm]emoryCaptures/

# Metadaten von Assets sollten nur ignoriert werden, wenn auch das entsprechende Asset ignoriert wird
!/[Aa]ssets/**/*.meta

# Kommentieren Sie diese Zeile aus, wenn Sie das Asset Store Tools Plugin ignorieren möchten
# /[Aa]ssets/AssetStoreTools*

# Automatisch generiertes Jetbrains Rider-Plugin
[Aa]ssets/Plugins/Editor/JetBrains*

# Visual Studio-Cacheverzeichnis
.vs/

# Gradle-Cacheverzeichnis
.gradle/

# Automatisch generierte VS/MD/Consulo-Lösungs- und Projektdateien
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db

# Von Unity3D generierte Meta-Dateien
*.pidb.meta
*.pdb.meta
*.mdb.meta

# Von Unity3D generierte Datei über Absturzberichte
sysinfo.txt

# Builds
*.apk
*.unitypackage

# Von Crashlytics generierte Datei
crashlytics-build.properties

Dann habe ich eine Hauptszene erstellt, die von keinem Einzelnen während der Entwicklung geändert werden sollte. Es sollte die Demoszene für alle Entwickler und Künstler im Team sein, um die neuesten Funktionen im Spiel zu testen. Zunächst sollte jedes neue Feature in einem separaten Branch von Main sein, außerdem hat jedes Teammitglied seine eigene Szene, die er für Tests und Entwicklung verwendet. Sobald alles gut ist, erstellt er/sie eine PR, die von anderen Mitgliedern überprüft wird. Wenn das verschmolzene Feature komplett ist, fügen wir es der Hauptszene hinzu, damit alle anderen Mitglieder den Einfluss und den Fortschritt sehen.

Was die Kunstdateien betrifft, ist es besser, Konflikte zu vermeiden, indem man Varianten von Sprite-Dateien hat und die Haupt-Sprites durch vollständig neue angepasste aus den PRs ersetzt. [1]: https://github.com/

0voto

Aaron Coltof Punkte 11

Wenn Sie Versionskontrolle verwenden, stellen Sie sicher, dass Sie ein Git-Ignore für die nutzlosen Dateien haben: https://github.com/github/gitignore/blob/main/Unity.gitignore

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X