Basic Datentypen und Serializability von Custom Classes
- Serialisierbare Standardklassen und Datentypen
Wie Datenstrukturen aufgebaut werden müssen, damit sie in Assets und Szenen korrekt speicherbar sind, ist eine wichtige Grundlage zum Erstellen von eigenen Daten innerhalb von Unity.
- Reflections von Template Datentypen
Nicht alle Daten eines Klassenkonstruktes sind immer vollständig bekannt. Reflections (ein C# Feature) helfen hierbei, unbekannte Inhalte zu klassifizieren und anzuzeigen.
- Defines und Setup für den korrekten Aufbau des Projekts
Da Unity auf der Basis einer Edit-Time/Run-Time Trennung basiert, wird entsprechend vermittelt, wie Editor-Skripte sich in der Umgebung einfügen müssen, um korrekt auch in der Publishing-Phase zu funktionieren.
Eine Auswahl von möglichen Wegen, um den Editor zu erweitern
- Menü-Erweiterungen mit statischen Funktionen
Menüeinträge stellen eine Möglichkeit dar, einfache Abläufe oder Tests in der Unity-Umgebung schnell verfügbar zu machen.
- Der Custom Inspector
Custom Inspector Ansichten sind der Schlüssel zu komplexen Einstellmöglichkeiten für MonoBehaviours. Hier können Klassen mit beliebigen Zusatzfunktionen projektweit ausgestattet werden.
- Seperate EditorWindows
Seperate EditorWindows stellen eine der komplexesten Formen der Unity-Erweiterung dar. Bei der Erstellung ist quasi alles im Rahmen der UnityGUI-Möglichkeiten erlaubt. Hiermit sind z.B. Node-Systeme und komplexe neue GUIs darstellbar.
- PropertyDrawers und andere Verschönerungen
Viele Datentypen und Erweiterungen bedürfen teils keiner aufwändigen Extrafunktionalität, sondern komplexer Darstellungen der Einstellungsmöglichkeiten eines einzelnen Eintrags. PropertyDrawers sind der Schlüssel zur angenehmen Benutzung des Inspectors.
Callback-Funktionalitäten und Szenenupdate
- OnSceneGUI
Grafische Erweiterungen im SzenenView sind ein wichtiger Schlüssel zur Darstellung von neuen Funktionalitäten.
- OnInspectorGUI
Die Inspector-Darstellung kann beliebig verändert und erweitert werden. Hier wird geklärt, wie das funktioniert.
- EditorApplication.update / EditorApplication.delayCall
Nicht alle Funktionalitäten sind immer auf Knopfdruck auszulösen. Wie man beliebige Jobs innerhalb der Unity-UI im Hintergrund bzw. zu anderen Zeitpunkten auslöst, wird nun geklärt.
- Input via Maus und Keyboard
direkter Input durch Maus und Keyboard ermöglicht vollkommen neue Eingabemethoden und Funktionalitäten.
- Event-Reaktionen
Die Möglichkeit, auf bestimmte Events in der bereits bestehenden GUI zu reagieren, ist essentiell, um z.B. auf Menü-Kommandos Aktionen folgen zu lassen.
- Undo/Redo-Funktionalitäten
Arbeiten am Computer ohne Undo/Redo ist undenkbar. Unity besitzt ein komplexes System für die Historien-Verwaltung.
Inspector-, Szenen- und Editor Window-Aufbau
- Handles und Gizmos im Editor
Handles und Gizmos sind wichtige Tools zum Darstellen von grafischen Inhalten. Erzeugt werden Debug-Texte und Grafiken, die Zusammenhänge in Funktionalitäten und Tools visualisieren.
- Szenenkameras und Raycasting im SceneView
Der SceneView hat diverse Möglichkeiten der Darstellung: Auf z.B. der Geometrie die Szene-Daten anzeigen oder auslesen zu können, ist eine vielseitige Funktionalität.
- GUILayout/EditorGUILayout und Custom-Eingabeelemente
Die Eingabeelemente sind nicht zwangsläufig immer nur Buttons und Sliders. Mit Hilfe der Darstellungstools sind frei erfundene GUIs darstellbar und mit Funktionalität verknüpfbar.
- Processing Feedback bei zeitaufwändigen Aufgaben
Viele Aufgaben im Editor sind sehr zeitaufwändig; ein gutes Beispiel hierfür ist z.B. das NavMesh Baking. Wie solche Prozesse selbst visualisierbar und mit Progress und Abbruch-Möglichkeit ausstattbar sind, erfahren wir hier.
- Inspector-Aufbau für gleichzeitiges Manipulieren von multiplen Instanzen
Da mehr als ein Objekt für den Inspector auswählbar und manipulierbar ist, sind spezielle Vorkehrungen notwendig, um das Editieren von multiplen Instanzen mit den neuen Skripten vereinbar zu machen.
- Detektieren von und reagieren auf GUI-Veränderungen
Gerade bei zeitaufwändigen Dingen muss geklärt werden, wann Änderungen im Inspector Prozesse auslösen und wann nicht. Custom-GUI Elemente sind hierbei abzufragen und Logik an die Auslösung zu hängen.
- Öffnen von Standard-Fenstern für Szenen-Interaktionen
Bestehende Dialoge für Verknüpfungen und Interaktion mit z.B. Files wird über Standard-Editorfenster gelöst. Wie diese zu öffnen und anzuwenden sind, wird geklärt.
- Objekte, Selections und Modifikationen in der Hierarchie
Selektionen und Objekte in der Hierachy spielen oft eine Rolle z.B. im Manipulieren der Szene. Hier erfahren wir, wie diese Auswahlen und Objekte in die Funktionalitäten einzubinden sind.
Die Asset Database
- Auslesen, speichern, laden und refreshen
Die AssetDB ist der Schlüssel zum Verpacken und Wiederverwenden von Inhalten. Wie diese in Editor-Extensions genutzt und ausgelesen wird, erfahren wir hier.
- Erstellen von Inhalten
Inhalte in der AssetDB sind nicht zwangsläufig statische Größen. Wir können auch prozedural Inhalte erstellen und zur Wiederverwendung abspeichern und nutzen.
Der Unity AssetStore
- Publishing von erstellten Extensions im Store
Der Unity AssetStore stellt eine interessante Einkommensquelle für jede Form von Publisher dar. Privatpersonen sowie Firmen können hier ihre Inhalte und Extensions frei verkaufen. Es wird auf den Aufbau und die Herangehensweise eingegangen.
- Guidelines für den Aufbau
Unity selbst stellt gewisse Anforderungen für ein erfolgreiches Publishing im Store. Auf was zu achten ist und wie z.B. der Code und die Pakete aufzubauen sind, erfahren wir hier.