Hero background image

Skripting in Unity für erfahrene Programmierer

Verfügen Sie bereits über C++-Kenntnisse?

Unity unterstützt C#, eine Standardsprache der Branche mit Ähnlichkeiten zu Java oder C++.

C# ist einfacher zu lernen als C++. Darüber hinaus ist es eine "verwaltete Sprache", die Ihnen die Speicherverwaltung abnimmt: Arbeitsspeicher wird automatisch zugewiesen und freigegeben, Speicherlecks abgefangen usw.

Insgesamt ist C# C++ vorzuziehen, wenn Sie zuerst ein Spiel erschaffen und sich anschließend mit den komplexeren Aspekten der Programmierung befassen möchten.

GameObjects und Komponenten in Unity
GameObjects und Komponenten in Unity
Skripting-Komponenten in Unity
Unity Megacity-Demo in DOTS
Vorteile des datenorientierten Designs mit DOTS

Das traditionelle GameObject-Komponenten-Konzept funktioniert immer noch gut, da es für Programmierer wie Nicht-Programmierer gleichermaßen einfach verständlich ist und sich dafür einfach intuitive Benutzeroberflächen erstellen lassen. Sie fügen einem GameObject eine Starrkörper-Komponente hinzu, um ihm Falleigenschaften zu verleihen, oder eine Licht-Komponente, um es leuchten zu lassen usw.

Das Komponentensysteme wurde jedoch in einem objektorientierten Framework geschrieben und stellt somit bei der Verwaltung des Zwischenspeichers und Arbeitsspeichers bei der sich ständig weiterentwickelnden Hardware eine Herausforderung für Entwickler dar.

Komponenten und GameObjects sind stark C++-basierte Objekte. Alle GameObjects haben einen Namen. Ihre Komponenten sind C#-Wrapper, die auf C++-Komponenten aufgesetzt werden. Dies erleichtert die Arbeit mit ihnen, kann jedoch die Leistung beeinträchtigen, da sie potenziell unstrukturiert im Speicher abgelegt werden. Das C#-Objekt kann sich überall im Speicher befinden. Auch das C++-Objekt wird an einer beliebigen Stelle des Speichers abgelegt. Dinge werden im fortlaufenden Speicher nicht gruppiert. Jedes Mal, wenn etwas zur Verarbeitung in den Prozessor geladen wird, muss es von mehreren Speicherorten zusammengetragen werden. Dies kann ein langsamer und ineffizienter Prozess sein, der aufwändig optimiert werden muss.

Um diese Leistungsprobleme in den Griff zu bekommen, bauen wir Unity von Grund auf mit dem leistungsstarken datenorientierten Technologie-Stack für Mehrkernprozessoren (DOTS) (derzeit als Vorabversion) neu auf.

DOTS ermöglicht es Ihrem Spiel, die neuesten Mehrkernprozessoren effizient auszunutzen. Er besteht aus:

Das neue Komponentensystem in DOTS ist ECS. Was Sie in einem traditionellen objektorientierten Ansatz mit einem GameObject tun, tun Sie in diesem neuen System mit einer Entity. Komponenten bleiben unverändert. Der entscheidende Unterschied liegt im Datenlayout. Mehr dazu lesen Sie im Blogbeitrag „Zu DOTS: Entity-Component-System

Unity Megacity-Demo in DOTS
Moderne Hardware optimal nutzen

ECS ist nicht nur aus Designgründen der bessere Ansatz zur Spieleprogrammierung. Mit ECS können Sie das C#-Jobsystem und den Burst Compiler von Unity auf moderner Hardware optimal nutzen.

Mit den Mehrkernsystemen von DOTS können Sie Spiele entwickeln, die auf unterschiedlicher Hardware laufen, und lebendigere Spielwelten mit mehr Elementen und komplexeren Simulationen erschaffen. Leistungsstarker Code trägt wiederum dazu bei, dass der Prozessor auf Mobilgeräten nicht zu heiß wird und nicht zu viel Strom verbraucht. Wenn Sie vom objektorientierten zum datenorientierten Design wechseln, kann es für Sie und andere, die mit Ihrem Code arbeiten, einfacher sein, Ihren Code weiter zu verwenden.

Da die Technologie von DOTS noch teilweise als Vorabversion verfügbar ist, sollten Entwickler ihn derzeit nur zur Lösung spezifischer Leistungsprobleme in ihren Projekten und nicht zum Entwickeln ganzer Projekte verwenden. Im Abschnitt "Weitere Ressourcen" unten auf dieser Seite finden Sie Links zu den wichtigsten DOTS-Ressourcen.

Der Unity Profiler für optimierte Performance
Fehlerbehebung in Unity

Optimierung und Fehlerbehebung sind in Unity so effizient, da Entwickler beim Spielen alle Gameplay-Variablen sehen und direkt ändern können, ohne auch nur eine einzelne Codezeile schreiben zu müssen. Das Spiel kann jederzeit angehalten oder der Code von Anweisung zu Anweisung schrittweise ausgeführt werden.

Mit diesen hervorragenden Ressourcen machen Sie sich mit der Optimierung in Unity vertraut:

Der Profiler

Die Profilanalyse

Der Memory-Profiler

Optimierung in Unity verstehen

Die Grafikleistung optimieren

Allgemeine bewährte Verfahren (einschließlich umfassender Tipps zur Optimierung des Benutzeroberflächensystems von Unity)

Skripting-Backends in Unity

.NET: .NET: Unity hat eine Implementierung der Standard-Mono-Laufzeitumgebung mit nativer C#-Unterstützung für Skripting verwendet. Derzeit wird Unity für Mac mit Visual Studio ausgeliefert statt mit MonoDevelop-Unity auf macOS. Unter Windows wird Unity mit Visual Studio ausgeliefert.

Die -NET 4.6-Skripting-Laufzeitumgebung in Unity unterstützt viele der neuen spannenden Funktionen von C# sowie die Fehlerbehebung ab C# 6.0. Außerdem wird eine hervorragende integrierte C#-Entwicklungsumgebung für die neuen C#-Funktionen bereitgestellt.

IL2CPP: IL2CPP: Dieses von Unity entwickelte Skripting-Backend stellt für Projekte auf einigen Plattformen eine Alternative zu Mono dar. Wenn Sie ein Projekt mit IL2CPP erstellen, konvertiert Unity den IL-Code aus Skripten und Assemblys in C++-Code und erstellt dann eine native Binärdatei (z. B. .exe, .apk, .xap) für die gewählte Plattform.

Beachten Sie, dass IL2CPP für Spiele auf iOS und WebGL das einzig verfügbare Skripting-Backend ist.

Unity durch Erweitern des Editors anpassen

Weitere Ressourcen

Ihr Spiel zu DOTS konvertieren
Ihr Spiel zu DOTS konvertieren
Megacity-Demo in DOTS
DOTS-Dokumentation
Tools und Services enthalten in der Unity-Entwicklungsplattform
Überblick über die Echtzeit-3D-Plattform von Unity