Freigeben über


DevOps mit Unity-Apps

Das Entwickeln von Apps für moderne Plattformen umfasst viele mehr Aktivitäten als nur das Schreiben von Code. Diese Aktivitäten, die als DevOps (Entwicklung + Vorgänge) bezeichnet werden, umfassen den gesamten Lebenszyklus der App und umfassen Planung und Nachverfolgung von Arbeiten, Entwerfen und Implementieren von Code, Verwalten eines Quellcode-Repositorys, Ausführen von Builds, Verwalten kontinuierlicher Integrationen und Bereitstellungen, Tests (einschließlich Komponententests und UI-Tests), Ausführen verschiedener Diagnoseformen in Entwicklungs- und Produktionsumgebungen sowie Überwachung der App-Leistung und Benutzerverhalten in Echtzeit durch Telemetrie und Analytik.

Visual Studio bietet zusammen mit Azure DevOps Services und Team Foundation Server eine Vielzahl von DevOps-Funktionen. Viele davon gelten für plattformübergreifende Projekte, einschließlich Spielen und immersiven grafischen Apps, die mit Unity erstellt wurden – insbesondere bei der Verwendung von C# als Skriptsprache. Da Unity jedoch über eine eigene Entwicklungsumgebung und ein eigenes Laufzeitmodul verfügt, gelten einige DevOps-Features nicht wie für andere Arten von Projekten, die in Visual Studio erstellt wurden.

In den folgenden Tabellen wird beschrieben, wie DevOps-Features in Visual Studio angewendet werden oder nicht angewendet werden, wenn Sie mit Unity arbeiten. Ausführliche Informationen zu den Features selbst finden Sie in der verknüpften Dokumentation.

Agile Tools

Referenzlink: Informationen zu Agile-Tools und agilem Projektmanagement (mit Azure Boards oder TFS, einschließlich Team Explorer Überall)

Allgemeiner Kommentar: Alle Planungs- und Tracking-Features sind unabhängig von Projekttyp- und Codierungssprachen.

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Verwalten von Backlogs und Sprints Ja
Arbeitsnachverfolgung Ja
Zusammenarbeit im Teamraum Ja
Kanban-Boards Ja
Melden und Visualisieren des Fortschritts Ja

Modellierung

Referenzlink: Analysieren und Modellarchitektur

Allgemeiner Kommentar: Obwohl diese Entwurfsfeatures unabhängig von der Codierungssprache sind oder mit .NET-Sprachen wie C# arbeiten, arbeiten sie mit einem herkömmlichen Anwendungsparadigma mit Objekthierarchien und Klassenbeziehungen. Das Entwerfen eines Spiels innerhalb von Unity umfasst ein anderes Paradigma insgesamt, nämlich die Beziehungen von grafischen Objekten, Sounds, Shadern, Skripts usw. Aus diesem Grund sind die Visual Studio-Modellierungsdiagrammtools für das gesamte Unity-Projekt nicht besonders relevant. Sie könnten möglicherweise verwendet werden, um Beziehungen in C#-Skripts zu verwalten, aber das ist nur ein Teil des gesamten.

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Sequenzdiagramme Nein
Abhängigkeitsdiagramme Nein
Anrufhierarchie Nein
Klassendesigner Nein
Architektur-Explorer Nein
UML-Diagramme (Anwendungsfall, Aktivität, Klasse, Komponente, Sequenz und DSL) Nein
Ebenendiagramme Nein
Ebenenüberprüfung Nein

Code

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Verwenden Sie Team Foundation Version Control (TFVC) oder Azure Repos Ja Unity-Projekte sind einfach eine Sammlung von Dateien, die wie jedes andere Projekt in Versionssteuerungssysteme platziert werden können, aber es gibt einige spezielle Überlegungen, die nach dieser Tabelle beschrieben werden.
Erste Schritte mit Git in Azure Repos Ja Sehen Sie sich die Notizen nach der Tabelle an.
Verbessern der Codequalität Ja
Ermitteln Codeänderungen und andere Verläufe Ja
Verwenden von Codezuordnungen zum Debuggen Ihrer Anwendungen Ja

Besondere Überlegungen zur Versionssteuerung mit Unity:

  1. Unity verfolgt Metadaten zu Spielressourcen in einer einzelnen, undurchsichtigen Bibliothek, die standardmäßig ausgeblendet ist. Um Dateien und Metadaten synchron zu halten, ist es notwendig, die Metadaten sichtbar zu machen und in besser verwaltbaren Blöcken zu speichern. Ausführliche Informationen finden Sie unter Verwenden externer Versionssteuerungssysteme mit Unity (Unity-Dokumentation).

  2. Nicht alle Dateien und Ordner in einem Unity-Projekt sind für die Quellcodeverwaltung geeignet, wie auch im obigen Link beschrieben. Die Ordner "Assets" und "ProjectSettings" sollten hinzugefügt werden, aber die Ordner "Bibliothek" und "Temp" sollten nicht hinzugefügt werden. Eine zusätzliche Liste der generierten Dateien, die nicht in die Quellcodeverwaltung gelangen würden, finden Sie in der Diskussion Verwenden von Git für Unity3D-Quellcodeverwaltung? auf Stack Overflow. Viele Entwickler haben auch unabhängig voneinander über dieses Thema gebloggt.

  3. Binäre Ressourcen in einem Unity-Projekt , z. B. Texturen oder Audiodateien, können einen großen Speicherplatz belegen. Verschiedene Quellcodeverwaltungssysteme wie Git speichern eine eindeutige Kopie einer Datei für jede vorgenommene Änderung, auch wenn sich die Änderung nur auf einen kleinen Teil der Datei auswirkt. Dies kann dazu führen, dass das Git-Repository aufgebläht wird. Um dies zu beheben, entscheiden sich Unity-Entwickler häufig dafür, nur endgültige Ressourcen zu ihrem Repository hinzuzufügen, und verwenden eine andere Möglichkeit, einen Arbeitsverlauf ihrer Objekte wie OneDrive, DropBox oder Git-Anhang beizubehalten. Dieser Ansatz funktioniert, da solche Ressourcen in der Regel nicht zusammen mit Quellcodeänderungen versioniert werden müssen. Entwickler legen in der Regel auch den Serialisierungsmodus des Projekteditors auf "Force Text" fest, um Szenendateien im Text- statt im Binärformat zu speichern, wodurch Zusammenführungen in der Quellcodeverwaltung ermöglicht werden. Ausführliche Informationen finden Sie unter Editoreinstellungen (Unity-Dokumentation).

Bauen

Referenzlink: Azure Pipelines

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Lokaler Team Foundation-Server (TFS) Möglich Unity-Projekte werden über die Unity-Umgebung und nicht über das Visual Studio-Buildsystem erstellt (das Erstellen innerhalb der Visual Studio-Tools für Unity kompiliert die Skripts, aber keine ausführbare Datei). Es ist möglich, Unity-Projekte über die Befehlszeile zu erstellen (Unity-Dokumentation). Sie können also einen MSBuild-Prozess auf einem TFS-Server zum Ausführen der entsprechenden Unity-Befehle konfigurieren, sofern Unity selbst auf diesem Computer installiert ist.

Unity bietet auch Unity Cloud Build, das ein Git- oder SVN-Repository überwacht und regelmäßige Builds ausführt. Derzeit funktioniert es nicht mit TFVC oder Azure DevOps Services.
Lokaler Buildserver, der mit Azure DevOps Services verknüpft ist Möglich Unter den gleichen Bedingungen wie oben ist es weiterhin möglich, die über Azure DevOps Services ausgelösten Builds auf einen lokalen TFS-Computer zu lenken. Anweisungen finden Sie im Artikel zum Erstellen und Veröffentlichen von Agents.
Gehosteter Controllerdienst von Azure DevOps Services Nein Unity-Builds werden derzeit nicht unterstützt.
Builddefinitionen mit Skripts vor bzw. nach der Ausführung Ja Eine benutzerdefinierte Builddefinition, die die Unity-Befehlszeile zum Ausführen eines Builds verwendet, kann auch für Skripts vor und nach dem Build konfiguriert werden.
Continuous Integration (einschließlich Gated-Check-Ins) Ja Gated-Check-Ins für TFVC nur dann, wenn Git auf einem Pull-Request-Modell statt mit Eincheckvorgängen arbeitet.

Test

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Planen von Tests, Erstellen von Testfällen und Organisieren von Testsammlungen Ja
Manuelle Tests Ja
Test-Manager (Aufzeichnungs- und Wiedergabetests) Nur Windows-Geräte und Android-Emulatoren
Code Coverage n/a Gilt nicht, wenn Komponententests innerhalb von Unity und nicht in Visual Studio durchgeführt werden, siehe unten.
Ausführen von Komponententests für Code Innerhalb von Unity, aber nicht in Visual Studio Unity stellt ein eigenes Komponententestframework als Teil Unity-Testtools (Unity Asset Store) bereit. Komponententestergebnisse werden in Unity gemeldet und werden nicht in Visual Studio angezeigt.
Verwenden Sie UI-Automatisierung zum Testen des Codes Nein Codierte UI-Tests basieren auf lesbaren Steuerelementen in der Benutzeroberfläche der App; Unity-Apps sind in der Natur grafisch dargestellt, sodass Inhalte nicht von den Coded UI-Testtools gelesen werden können.

Verbessern der Codequalität

Referenzlink: Codequalität verbessern

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Analysieren der Qualität von verwaltetem Code Ja Kann den C#-Skriptcode in Visual Studio analysieren.
Finden von dupliziertem Code mithilfe der Erkennung von Code-Klonen Ja Kann den C#-Skriptcode in Visual Studio analysieren.
Messen der Komplexität und Wartung von verwaltetem Code Ja Kann den C#-Skriptcode in Visual Studio analysieren.
Leistungstools Nein Verwenden des Unity Profiler (Unity-Website)
Analysieren von .NET Framework-Speicherproblemen Nein Visual Studio-Tools haben keine Anbindungen an das Mono-Framework (wie von Unity verwendet), um Profiling zu unterstützen. Verwenden Sie den Unity-Profiler (Unity-Dokumentation).

Versionsverwaltung

Referenzlink: Erstellen und Veröffentlichen in Azure Pipelines und TFS

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Verwalten von Veröffentlichungsprozessen Ja
Bereitstellen auf Servern für das Sideloading über Skripts Ja
Hochladen in den App Store Teilweise Erweiterungen sind verfügbar, die diesen Prozess für einige App-Stores automatisieren können. Siehe Erweiterungen für Azure DevOps Services; Zum Beispiel die Erweiterung für Google Play.

Überwachen mit HockeyApp

Referenzlink: Monitor mit HockeyApp

Merkmal Unterstützt mit Unity Zusätzliche Kommentare
Absturzanalyse, Telemetrie und Betaverteilung Ja HockeyApp ist hauptsächlich nützlich für die Verwaltung der Betaverteilung und das Sammeln von Absturzberichten.

Für Telemetrie aus C#-Skripts ist es möglich, jedes Analyseframework zu verwenden, das auf der von Unity verwendeten Version von .NET läuft. Dies ermöglicht jedoch nur Analysen innerhalb von Spielskripts und nicht tiefer in der Unity-Engine. Derzeit gibt es kein Plug-In für Application Insights, aber Plug-Ins sind für andere Analyselösungen wie Unity Analytics und Google Analyticsverfügbar. Dienste wie Unity Analytics, die die Natur eines Unity-Projekts verstehen, bieten natürlich viel aussagekräftigere Analysen als generische Frameworks.