Unity-Version 2019.3

Neue Funktionen und Updates für Programmierer

Erfahren Sie, was Unity 2019.3 für Entwickler Neues zu bieten hat, darunter wichtige Updates für DOTS, verbesserte Versionskontrolle, konfigurierbarer Spielmodus, Serialisierungsverbesserungen, Physik-Updates und mehr.

Das ist neu

Hier ist eine Übersicht über wichtige neue Updates für Programmierer-Tools. Alle Details können Sie in den Versionshinweisen einsehen.

DOTS-Spielcode-Update

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.

Um mit dem Schreiben von DOTS-Code auf die neue Art und Weise zu beginnen, installieren Sie das Entities-Paket (Vorschau) aus dem Package Manager.

DOTS_game_code_update.cs (C#)
using System;
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Jobs;
using Unity.Sample.Core;
using Unity.Transforms;
using UnityEngine;
[GenerateAuthoringComponent]
struct Velocity : IComponentData
{
	public float value;
}
class ApplyVelocitySystem : JobComponentSystem
{
	protected override JobHandle OnUpdate(JobHandle inputDeps)
	{
		float deltaTime = Time.deltaTime;
		return Entities.ForEach((ref Translation translation, in Velocity velocity) =>
		{
			translation.Value += velocity.Value * deltaTime;
		}).Schedule(inputDeps);
	}
}
Mehr erfahren

Verbesserungen bei der Serialisierung

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. Zum Beispiel kann eine Liste des Typs List<IAnimal> Hunde (class Dog : IAnimal{}) und Katzen (class Cat : IAnimal{}) enthalten.

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.

Serialization_improvements.cs (C#)
using System;
using System.Collections.Generic;
using UnityEngine;

public interface IShape {}
[Serializable]
public class Cube : IShape
{
    public Vector3 size;
}
[ExecuteInEditMode]
public class BuildingBlocks : MonoBehaviour
{
    [SerializeReference]
    public List<IShape> inventory;
   void OnEnable()
    {
        if (inventory == null)
        {
            inventory = new List<IShape>()
            {
                new Cube() {size = new Vector3(1.0f, 1.0f, 1.0f)}
            };
            Debug.Log("Created list");
        }
        else
            Debug.Log("Read list");
    }
}
Mehr erfahren

Schnellere Iteration mit konfigurierbarem Spielmodus

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. Deshalb haben wir den konfigurierbaren Spielmodus (experimentell) in den Optionen Projekteinstellungen > Editor > Spielmodus eingeführt. 

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.

Sie können diese Funktion auch über eine API und einen Callback aufrufen, wenn Sie den Spielstatus zurücksetzen möchten, bevor Sie in den Spielmodus wechseln.

Diese Funktion ist derzeit experimentell, und wir freuen uns darauf, im Forum Ihre Meinung darüber zu hören.

Mehr erfahren

PhysX-Bibliothek aktualisiert von v3.4 zu v4.1

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 die neue Lösung zu aktivieren, wechseln 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. 

Weitere Informationen finden Sie im Abschnitt „Migrating from PhysX SDK 3.4 to 4.0“ in NVIDIAs PhysX 4.1 SDK Guide.

Mehr erfahren

Profiler-Verbesserung: Konfigurierbare Frame-Anzahl

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.

Mehr erfahren

Profiler-Verbesserung: Deep Profile-Unterstützung in Playern

Mit diesem Update können Sie die Deep Profiling-Unterstützung für alle Spieler im Build-Fenster oder mit der BuildPlayer API aktivieren.

Wenn Sie einen Player mit Deep Profiling-Unterstützung erstellen, können Sie Zeitstempel beim Ein- und Ausstieg aus C#-Methoden aufnehmen. Diese C#-Instrumentierung kann jedoch mit einem Leistungs-Overhead verbunden sein, weshalb wir die Option hinzugefügt haben, sie für jeden einzelnen Player auszuschalten.

Mehr erfahren

Profiler-Verbesserung: Unterstützung für verwaltete Zuordnungen von Aufruf-Stacks in Playern

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.

Mehr erfahren

Verbesserungen bei der Versionskontrolle

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.

Versionshinweise überprüfen

Addressables

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.

Mehr erfahren

Netcode

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.

Mehr erfahren

Unity 2019.3 jetzt herunterladen

Erhalten Sie noch heute Zugriff auf all das und mehr.

Wir verwenden Cookies, damit wir Ihnen die beste Erfahrung auf unserer Website bieten können. In unseren Cookie-Richtlinien erhalten Sie weitere Informationen.

Verstanden