Neue Funktionen und Updates für Programmierer
Das ist neu
Hier ist eine Übersicht über wichtige neue Updates für Programmierer-Tools. Alle Details können Sie in den Versionshinweisen einsehen.
Schreiben Sie weniger Standardcode mit den neuen Versionen unserer DOTS-Pakete. Ersetzen Sie benutzerdefinierte Authoring-Komponenten durch ein einfaches [GenerateAuthoringComponent]-Attribut und ersetzen Sie diese ausführlichen IJobForEach- und IJobForEachWithEntity-Konstrukte durch das einfachere, aber genauso schnelle Entities.ForEach(), das jetzt den Burst Compiler und das C#-Jobsystem verwendet.
Mit dem neuen Attribut SerializeReference können Sie C#-Klassen als Referenzen anstatt als Werttypen serialisieren. Das bedeutet, dass Sie POCOs (Plain Old C# Objects) haben können, die sich gegenseitig referenzieren, was den Code vereinfacht, um komplexe Datenstrukturen wie Diagramme und Baumstrukturen auszudrücken und zu verwalten.
Es bietet auch Unterstützung dafür, dass Felder polymorphe Daten enthalten können. Eine Liste des Typs List <IAnimal>kann beispielsweise Hunde enthalten (Klasse Hund: iAnimal {}) und Katzen (Klasse Cat: IAnimal{}).
Felder, die für die Serialisierung als Referenzen markiert sind, können nun Nullwerte intrinsisch ausdrücken. Bisher wurde ein Nullfeld bei der Serialisierung immer mit dem Standardkonstruktor dieses Typs deserialisiert.
Die Serialisierung von anderen als Unity-Typen hat traditionell den Polymorphismus ignoriert. In Unity 2019.3 ermöglicht Ihnen die polymorphe Serialisierung, Objektreferenzen zu pflegen, die den Serialisierungsprozess vorher nicht überlebt hatten, und die Vererbungskette korrekter zu referenzieren.
Wenn Sie derzeit im Editor in den Spielmodus wechseln, macht Unity zwei Dinge: Es setzt die Skriptstatus zurück (Domain Reload) und lädt die Szene neu. Dies braucht Zeit, und wenn Ihr Projekt komplexer wird, kann es vorkommen, dass der Unity-Editor nur langsam in den Spielmodus kommt. Aus diesem Grund führen wir den konfigurierbaren Startmodus (Experimentell) in den Projekteinstellungen > Editor > Optionen zum Aufrufen des Wiedergabemodus ein.
Mit diesen Optionen können Sie das erneute Laden von Bereichen und/oder Szenen während des Spielmodus deaktivieren, wenn sich der Code nicht ändert. Basierend auf unseren Testergebnissen können Sie durch die Änderung dieser Einstellungen je nach Projekt 50–90 % der Iterationszeit einsparen.
Weitere Informationen darüber, wie Sie Ihre Skripts korrekt ändern können, wenn Sie Domain Reload deaktiviert haben, finden Sie unter Spielmodus konfigurieren in der Dokumentation.
Diese Funktion ist derzeit experimentell, und wir freuen uns darauf, im Forum Ihre Meinung darüber zu hören.
Wir haben die PhysX-Bibliothek von v3.4 zu v4.1 aktualisiert. Dazu gehört die neue temporäre Gauss-Seidel-Lösung, die es ermöglicht, dass Verbindungen widerstandsfähiger gegen Überdehnung sind und ein erratisches Verhalten verhindert, das zuvor während der Simulation beobachtet wurde. Um den neuen Solver zu aktivieren, gehen Sie zu Projekteinstellungen > Physik.
Wir haben auch den neuen Breitphasen-Algorithmus Automatic Box Pruning vorgestellt, der die Weltgrenzen und die Anzahl der Unterteilungen automatisch berechnen kann. Dies ist ein Upgrade des bestehenden Multi-Box-Pruning-Algorithmus.
Zusätzlich steht auf Desktop-Plattformen ein schnellerer Mesh-Mittelphasenalgorithmus zur Verfügung. Es müssen keine ressourcenintensiven Beschleunigungsstrukturen (R-Trees) aufgebaut werden, was für laufzeitgenerierte Inhalte nützlich ist, da die MeshCollider-Instanziierungszeit reduziert wird.
Wir haben auch eine neue API hinzugefügt, um verzögertes Baking von Meshes für MeshCollider zu ermöglichen. Sie können den rechenintensiven Mesh-Baking-Prozess hinter einem Ladebildschirm oder Übergangsszenen verstecken, wie eine Dialogszene in einem Adventure-Spiel. Diese API ist threadsicher, so dass Sie die Funktion auch außerhalb des Haupt-Threads aufrufen können, auch über das C#-Jobsystem, für das Baking mehrerer Meshes gleichzeitig.
Wenn Sie vor 2019.3 die Leistung über das Profiler-Fenster untersuchten, konnten Sie Profildaten von jeweils 300 Bildern gleichzeitig sehen. Das war aber nicht genug Zeit, um all die Frames zu erfassen, die wirklich wichtig sind.
Die konfigurierbare Frame-Anzahl ermöglicht es Ihnen, dieses Erfassungsfenster zu erweitern. Im Fenster Einstellungen können Sie nun die Anzahl der Einzelbilder (300–2000) konfigurieren, die das Profiler-Fenster anzeigen soll.
Die Verfolgung und Analyse von verwalteten Zuordnungen ist ein wichtiges Merkmal des Unity-Profilers.
Die kontinuierliche verwaltete Zuordnung bewirkt, dass die Garbage Collection (GC) einsetzt und das reibungslose Gameplay mit Multiframe-Verzögerung stört. Zu wissen, wann Zuordnungen erfolgen und woher sie im Code stammen, ist eine wesentliche Information bei der Entwicklung von Spielen mit Unity.
In 2019.3 führen wir Aufruf-Stacks für verwaltete Zuordnungen in Playern ein. Auf diese Weise können Sie die C#-Funktion sehen, aus der eine GC-Zuweisung stammt, wenn Sie Player profilieren.
Die Option kann mit dem Umschalter Aufruf-Stacks aktiviert werden.
Unity 2019.3 beinhaltet auch eine Überarbeitung der Unterstützung unserer Versionskontrolle.
Dazu gehören eine Reihe von UX- und Integrationsverbesserungen und Korrekturen für unsere Perforce-Integration, wie z. B. der automatische Wiederherstellungsversuch bei Verlust einer Perforce-Verbindung.
Oben im Inspektor-Fenster ist nun eine Versionskontrollleiste verfügbar, mit der Sie unter anderen Verbesserungen zusätzliche Operationen wie Hinzufügen, Sperren, Entsperren und Senden ausführen können.
Außerdem können Sie im Inspektor für nicht ausgecheckte Assets nun durch Klick mit der rechten Maustaste die Werte der deaktivierten Inspektorfelder kopieren.
Weitere Informationen zu allen Verbesserungen und Korrekturen der Benutzeroberfläche finden Sie in den Versionshinweisen.
Diese Version enthält das neue Addressable Asset System (d. h. Addressables), das Ihnen eine einfache Möglichkeit bietet, Assets nach „Adresse“ zu laden und gleichzeitig den Overhead für das Asset-Management zu bewältigen, indem die Erstellung und Bereitstellung von Content-Packs vereinfacht wird. Kurz gesagt, mit Addressables kann Ihr Team komplexe Live-Inhalte effizient verwalten.
Der im DOTS Sample verwendete FPS-Netcode basiert auf DOTS und macht es einfach, ein Netzwerkspiel mit ähnlicher Architektur zu erstellen. Es beinhaltet clientseitige Vorhersage, autoritativen Server, Interpolation und Lag-Kompensation.
Eine Einführung in FPS NetCode bietet der Unite-Vortrag von Tim Johansson.
Holen Sie sich all das und vieles mehr noch heute.