Teamwork in der Einheit


30

Ich habe ein Unity-Projekt ohne Versionskontrolle und muss es für einen anderen Entwickler freigeben, damit wir beide an dem Projekt arbeiten können.

Welche Strategien sollten verwendet werden, die mit Unity Assets gut funktionieren?


Ich denke, dieser Artikel wird Ihnen einige Tipps geben: va.lent.in/blog/2011/12/13/…
Den

2
DropBox unterstützt die Versionskontrolle, die Funktion heißt "Pack-Rat", ist aber nicht kostenlos. Als Rat für Indie-Entwickler für Anfänger wurden bereits zahlreiche Fragen gestellt. Ich würde vorschlagen, dass Sie ein wenig herumlaufen. Endlich Willkommen bei GameDev SE!
Quazi Irfan

Ohne den Asset-Server kann es zu Problemen beim Hin- und Herbewegen von Prefabs und Szenen kommen
Sidar

Antworten:


17

Unity verfügt über eine integrierte Funktion zur ordnungsgemäßen Unterstützung der Versionskontrolle.

Gehen Sie einfach in den Datei-> Projekteinstellungen-> Editor und aktivieren Sie die externe Versionskontrolle.


4
Ist das eine Pro-only Funktion? Ich sehe diesen Menüpunkt nicht in der Free / Indie-Windows-Version von Unity 2.6.
James

Ab dem 30.01.2011 ist es nur noch Pro. Siehe den zweiten Absatz von: unity3d.com/support/documentation/Manual/…
ojrac

11
Die neueste Entwicklervorschau von Unity (3.5 RC1) hat eine Änderung vorgenommen, um die Versionskontrolle in der kostenlosen Version zu unterstützen. aus dem Changelog ( unity3d.com/unity/preview/notes ): Lizenz: Generische externe Versionskontrolle (.meta-Dateien) sind jetzt in der kostenlosen Version verfügbar.
Chronic Game Programmer

2
Nur zu Ihrer Information für zukünftige Besucher, notieren Sie das Datum auf dieser Antwort. es ist mittlerweile veraltet. Jetzt müssen Sie keine Einstellung mehr aktivieren. versionieren Sie einfach die Ordner "Assets" (stellen Sie sicher, dass Ihre Versionskontrolle versteckte .meta-Dateien aufnimmt) und "Project Settings" und ignorieren Sie alles andere.
jhocking

10

Ich empfehle die Verwendung von Git, es ist kostenlos und das Beste in der Umgebung.

Vor einiger Zeit habe ich in meinem Blog über die Versionskontrolle (mit Git) geschrieben

Um es kurz zu machen:

Aktivieren Sie die externe Versionskontrolle Datei-> Projekteinstellungen-> Editor und erstellen Sie die .gitignore-Datei, um unnötige Inhalte auf dem Repo zu vermeiden (dies ist nicht unbedingt erforderlich, wird jedoch während der Entwicklung von unschätzbarem Wert sein).

So sollte die Datei aussehen:

[Oo]bj/
[Tt]emp/
[Ll]ibrary

#These are files in the root folder of the project
*.tmproj
*.csproj
*.unityproj
*.sln
*.suo
*.user
*.pidb
*.userprefs

Das ist fast die gleiche wie die .gitingoreich für Unity - Projekte aber mit ein paar ommissions: [Bb]uild/, *.booproj, sysinfo.txt. Ich bin mir ziemlich sicher, was ich verwende, basiert auf GitHubs neuen Repo-Vorlagen für Unity ( github.com/github/gitignore/blob/master/Unity.gitignore ) für Objective-C (bei Ausrichtung auf iOS).
Slipp D. Thompson

Interner Serverfehler in Ihrem Blog.
Santosh Kumar

4

Unity 3.0 ist so konfiguriert, dass es gut mit Subversion funktioniert. (Zumindest schöner als vorher) Ich weiß nicht, ob dies nur in der Pro-Version ist oder nicht, ich muss es überprüfen.

Im Allgemeinen ist der Unity Asset Server das am meisten empfohlene Versionskontrollsystem.


4

Einheitenspezifisch - Bearbeiten Sie jederzeit verschiedene Szenen und Codedateien und führen Sie die Änderungen der anderen Person manuell zusammen. Wenn Sie beide an derselben Szene arbeiten müssen, duplizieren Sie sie und verwenden Sie die Kopie als Test. Andernfalls überschreiben die Änderungen einer Person die Änderungen der anderen Person, wenn Sie beide dieselbe Szene ändern. Sie können die Quellcodeverwaltung weiterhin für Ihre Quelldateien verwenden. Verschieben Sie sie einfach nicht mehr im Dateisystem oder über Unity, sobald sie erstellt wurden.

Anfängertipps: Besorgen Sie sich ein anständiges Tool zum Vergleichen und Zusammenführen (ich mag WinMerge ) und gewöhnen Sie sich daran, damit zu sehen, welche Änderungen die andere Person vorgenommen hat, und Änderungen in in Konflikt stehenden Dateien manuell zusammenzuführen. Richten Sie einen zentralen Dokumentationsraum ein, z. ein Google-Dokument oder ein Wiki schreiben und Ihre Dokumentation dort aufbewahren - Die Dokumentation sollte mindestens eine Grundfunktionsliste enthalten, damit Sie wissen, was Sie anstreben, und im Idealfall eine aus der Funktionsliste abgeleitete Aufgabenliste sowie eine eindeutige Angabe von wem wird an der aufgabe gearbeitet. Sprechen Sie miteinander, um eine ungefähre Vorstellung davon zu bekommen, wer an welcher Aufgabe arbeiten muss, und streichen Sie sie von der Liste, wenn sie fertig sind. Überprüfen und bewerten Sie die Liste erneut, um festzustellen, ob noch alles gültig ist und ob Sie Prioritäten überarbeiten müssen.


Vielen Dank! Sie haben mir zu beiden Problemen gute Ratschläge gegeben.
nosferat

4

Ich arbeite mit einem Team, das sich Defective Studios nennt. Wir haben jahrelang mit dem gleichen Problem zu kämpfen, und vor kurzem habe ich endlich aufgegeben und angefangen, eine Erweiterung zu schreiben, die mir hilft, Spielobjekte zusammenzuführen.

Grundsätzlich besteht der Ansatz darin, eine inspektorähnliche Oberfläche in einem Fenster zu erstellen, die jedes Spielobjekt, jede Komponente und jede Eigenschaft zum Vergleich nebeneinander anordnet und Schaltflächen zum Kopieren von Werten (oder ganzen Objekten) von einer Seite zur anderen bereitstellt. Wenn Sie mit der SerializedPropertyKlasse vertraut sind, erledigen Sie den größten Teil der Arbeit hier. Grundsätzlich erstellen wir eine grafische Benutzeroberfläche, die den Ausklappstatus zwischen der rechten und der linken Seite synchronisiert und überall dort, wo ein GameObjectoder ist, vertikalen Raum schafftComponentexistiert nur auf der rechten oder linken Seite. Eine Vergleichsfunktion überprüft die Gleichheit auf jeder Ebene und setzt den Hintergrund jeder Linie je nach Gleichheitsstatus auf Rot oder Grün. Jede Zeile, deren untergeordnete Elemente einen Unterschied enthalten, wird ebenfalls rot. Außerdem haben wir eine nützliche Schaltfläche eingefügt, mit der Sie den Baum rekursiv durchsuchen und alle Objekte erweitern können, die sich unterscheiden oder Unterschiede in ihren untergeordneten Elementen aufweisen.

Außerdem gibt es eine Reihe von Maskenfeldern, mit denen Sie bestimmte Komponententypen aus dem Vergleich herausfiltern können. GameObject-Attribute wie Name, Layer und Tag werden ebenfalls verglichen. Wir verwenden SerializedObjectund SerializedProperty, um die gameObjectEigenschaften des Objekts zu durchlaufen und sie so zu zeichnen, wie sie im Inspektor gezeichnet wurden. Dies stellt die Konsistenz sicher und ist wesentlich einfacher zu programmieren!

Bildbeschreibung hier eingeben

Ein letztes raffiniertes Detail ist, dass der Vergleichsprozess (der beim Laden der Objekte und bei jeder Änderung ausgelöst wird) in einer Ad-hoc-Coroutine ausgeführt wird, die von der EditorWindow.UpdateFunktion aktualisiert wird , sodass Sie für den Fall, dass Sie ein äußerst kompliziertes Objekt vergleichen, Das Fenster sperrt den Editor nicht. Dies war ein Muss beim Vergleich von Objekten mit Hunderten (oder Tausenden!) Kindern. Alles in allem war es eine Art "Lego-Projekt", wie mein Freund gerne sagt, aber definitiv ein unschätzbares Werkzeug, das sofort Teil unseres Kollaborations-Workflows wurde.

Das Tool Unity Merge ist im Unify-Wiki dokumentiert. Es enthält eine Roadmap und eine E-Mail-Adresse für Feedback und Fehlerberichte. Wenn Sie wirklich mit einer komplizierten Zusammenführung zu kämpfen haben, probieren Sie es aus und teilen Sie uns Ihre Meinung mit! Ich habe mich auch nicht darum gekümmert, es in eine DLL zu integrieren. Die Ad-hoc-Coroutine-Implementierung und SerializedProperty-Manipulationen sowie einige GUI-Tricks, die ich letztendlich brauchte, sind ein großer Teil Ihres Editor-Erweiterungs-Toolkits. Ich bin sehr an Änderungen / Verbesserungen interessiert, die Benutzer haben könnten. Bitte nehmen Sie Kontakt mit uns auf!


1
Klingt nach einem nützlichen Tool, danke für die Verbesserung Ihrer vorherigen "Nur-Link" -Antwort.
MichaelHouse

1

Wenn Sie die Mittel dafür haben, ist der Asset-Server mit der Pro-Version von Unity ziemlich anständig. Ich habe es in der Vergangenheit für ein großes Projekt mit mehreren Personen verwendet und es hat den Job gemacht. Bei der Vanille-Versionskontrolle wurde das getan, was wir erwartet hatten.

Ich habe versucht, ein SVN-Repository mit einem Unity-Projekt zu verwenden, und es war ein bisschen mühsam. Am Ende haben wir die Idee jedoch verschrottet, bevor sie funktioniert hat. Unity speichert viele Sicherungsdateien, für die ich mir nicht die Zeit nehmen wollte, herauszufinden, was passieren würde, wenn sie nicht mit dem Server synchronisiert würden. Ich denke, mit ein wenig Finesse könnte es machbar sein, aber ich habe keine Erfahrung damit, dass es gut funktioniert.

Ich habe ein kleines Projekt mit den kostenlosen Funktionen von DropBox gemacht. Es hat mich nervös gemacht, aber wir hatten nie irgendwelche Probleme. Und ich glaube nicht, dass wir wirklich Versionskontrollmaterial für dieses Projekt brauchten, deshalb kann ich nicht viel darüber sagen, wie das Zurücksetzen oder Zusammenführen von Dateien verlaufen wäre.


1

Dropbox unterstützt die Versionsverwaltung pro Datei (und nicht per Festschreibung) und funktioniert gut mit Unity. Es ist anfangs kostenlos (2 Gigabyte) und danach recht günstig (ca. 10 US-Dollar für 50 Gigabyte). Sie benötigen das PackRat-Addon, um auf den Versionsverlauf zugreifen zu können.

Genau wie bei SVN, CVS, GIT usw. müssen Sie sicherstellen, dass Sie Tag-Ordner erstellen, wenn Sie zu jedem wichtigen Stadium in der Entwicklung gelangen (z. B. Ende der Woche, Ende des Meilensteins). Im Gegensatz zu den oben genannten ist es viel schwieriger, zu einem solchen Stadium zurückzukehren, wenn Sie dies nicht tun, da Sie jede einzelne Datei einzeln wiederherstellen müssten. Denken Sie daran, während Sie entwickeln, und Sie werden es leicht haben, ohne für den Asset Server zu bezahlen.


Das ist allerdings sooooo schmerzhaft. Unity muss die Szene jedes Mal neu erstellen, wenn Sie sie auf einem anderen Computer öffnen. Dadurch wird der Bibliotheksordner bei jedem Commit an vielen Stellen geändert. Das Ignorieren des Bibliotheksordners wäre schön, aber dann hätten Sie keine versionskontrollierten Szenendateien. Mein Team gab auf und kaufte eine Reihe von Pro-Lizenzen und gebrauchte Asset Server.
Brandon

@brandon Schätze, es hängt von der Projektgröße ab.
Ingenieur

1
Auf jeden Fall, wenn es ein paar Entwickler mit begrenztem Budget sind, würde ich Ihren Ansatz vorschlagen, da es wirklich der einzige ist
Brandon am

Aber haben Sie jemals an einem Projekt gearbeitet, das unter 2 GB bleibt? Was ist mit den Modellen und Texturen, die Sie einschließen werden? Schauen Sie sich bitbucket.com an und lernen Sie Git!
XandruCea

Absolut. Android / iOS-Projekte bleiben meiner Erfahrung nach definitiv unter dieser Größe (im Laufe des Jahres, als ich diese Antwort schrieb). Sie können auch mehr Speicherplatz auf Dropbox verdienen, indem Sie Freunde einladen.
Ingenieur
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.