Individuelle Projekt-Parameter für Benutzer oder Rechner

Wird ein Unity-Projekt auf unterschiedlichen Rechnern, z.B. von unterschiedlichen Bearbeitern, geöffnet, kann es vorkommen, dass sich individuelle Details in den Projekteinstellungen unterscheiden. In diesem Beitrag stelle ich eine Möglichkeit vor, wie man unterschiedliche Parameter und Werte innerhalb eines Unity-Projektes speichert, so dass Benutzer-Profile entstehen, die sich mitsamt des Projekts beliebig kopieren, verschieben und versionieren lassen. Zwischen Profilen zu wechseln ist dabei mit einem Klick möglich.

Anwendungsbeispiel individuelle Importpfade

In einigen meiner Spiele verwende ich das GDP-Toolkit, das aus zwei ins Projekt zu importierenden DLLs besteht. Da ich das GDP-Toolkit selbst parallel zum Spiel bearbeite, schreibe ich dessen Code in einem separaten Visual Studio-Projekt. Die DLLs und zugehörige Dateien kopiere ich dann mittels des FilePatching-Tools mit nur einem Befehl ins Unity-Projekt des Spiels.

Das GDP-Toolkit synchronisiere ich mit einem Git-Repository. Auf dem Standrechner habe ich das Repository unter c:\Daten\Git\GPD ausgecheckt, auf meinem Laptop unter c:\Git\GDP.

Möchte ich das Unity-Projekt meines Spiels nun auf beiden Rechner öffnen und bearbeiten, so entsteht das Problem, dass das FilePatching-Tool mit unterschiedlichen Pfaden arbeiten muss. Auf dem Standrechner sollen die DLLs aus c:\Daten\Git\GPD, auf dem Laptop aus c:\Git\GDP ins Projekt kopiert werden.

Warum nicht über EditorPrefs lösen?

Unity bietet mit der Klasse EditorPrefs bereits eine Möglichkeit, um Editor-Einstellungen zu speichern. Im einfachen Beispiel oben, ließen sich die Dateipfade auch als Editor-Präferenzen speichern. EditorPrefs sind dafür gedacht, einfache lokale Editor-Einstellungen zu sichern, wie zum Beispiel Fensterlayouts. Sie sind nur auf dem Rechner verfügbar, auf dem die Einstellungen vorgenommen wurden und sie können nicht mit dem Projekt gespeichert/kopiert werden. Bei Neuinstallation oder Versions-Updates gehen sie im Zweifelsfall verloren.

Editor-Profile als individuelle Wertespeicher

Ich habe daher im GDP-Toolkit Editor-Profile umgesetzt. Es handelt sich dabei um einen allgemeinen Datenspeicher auf Basis des ScriptableObject, der als lokale Datei in den Projekt-Assets liegt. Die Idee ist, dass man im Projekt für jeden Benutzer oder Rechner eine separate Profil-Datei erstellt. Das funktioniert natürlich auch ganz allgemein immer dann, wenn irgendeine Form alternativer Konfigurationen erforderlich werden.

Die Schlüsseleigenschaft liegt darin, dass es immer genau ein aktives Editor-Profil gibt, das als aktive Konfiguration angesehen wird. Um ein Profil zu wechseln, aktiviert man einfach ein anderes Editor-Profil, so dass sich mit nur einem Kommando eine ganze Reihe von Wertänderungen anwenden lassen.

Sieh Dir ein Beispiel an

Im Beitrag Bibliotheks-Code in mehreren Unity-Projekten nutzen beschreibe ich, wie ich dieses System konkret einsetze, um Dateien unter Berücksichtigung maschinenspezifischer Pfade zu importieren.

Bildnachweise:

Dr. René Bühling

Hi, mein Name ist René und ich möchte Dir dabei helfen, deinen Traum vom eigenen Computerspiel Wirklichkeit werden zu lassen. Mein erstes kommerziell veröffentlichtes Spiel habe ich Mitte der 1990er Jahre als Hobby-Projekt mit einem Basic-Dialekt unter Windows entwickelt. Seither verfolge ich das Thema Spieleentwicklung in Hobby, Studium und Beruf. Ich habe über 20 Jahre Erfahrung in allen Phasen des Entwicklungsprozesses, die ich gerne mit dir teilen möchte.