© Kindersps/Shutterstock.com
Erschließung neuer Use Cases und Mehrwerte mit Unity - Teil 1

3D-Welten erstellen: Einstieg in Unity


Unity ist eine beliebte Engine zum Erstellen von 2D/3D-Anwendungen und seit vielen Jahren im Einsatz. Nicht nur kleine Indiestudios, sondern auch große Firmen und AAA-Game-Studios setzen auf Unity zur Entwicklung von Applikationen und Spielen, die auf zahlreichen Plattformen lauffähig sind. Mit den 2D/3D-Möglichkeiten ergeben sich auch interessante Use Cases und Mehrwerte für den Anwender. Zeit, unser Portfolio zu erweitern!

Unity [1] ist eine generische 2D/3D-Engine, die allem voran natürlich zum Entwickeln von Spielen genutzt wird und aus dieser Ecke sicherlich dem Einen oder Anderen auch bekannt ist. Beispielsweise wurden die Spiele „Ori and the Blind Forest“, „Escape from Tarkov“, „Fall Guys“, „Kerbal Space Program“ oder „Call of Duty: Mobile“ mit der Engine entwickelt. Laut Aussage von John Riccitello, CEO von Unity Technologies, werden ca. 50 Prozent aller mobilen Spiele mit Unity entwickelt [2].

Jedoch lassen sich mit Unity nicht nur Spiele [3] entwickeln, sondern Unity kann auch im Automotive- [4], Architektur- [5] und sogar Filmbereich [6] eingesetzt werden. Dazu kommt, dass die Runtime von Unity auf allen erdenklichen Plattformen zur Verfügung steht. Angefangen von den Desktopplattformen Windows, Linux und macOS über mobile Plattformen wie Android und iOS, Konsolen wie PlayStation 4, Xbox One und Nintendo Switch bis hin zu AR-/VR-Plattformen wie Oculus, ARCore oder Microsoft HoloLens und natürlich dem Web mit WebGL, sind die in Unity erstellten Anwendungen lauffähig [7]. Der Unity-Editor läuft auf Windows und macOS. Unity steht jedem kostenfrei zur Verfügung und kann von der Website heruntergeladen werden [8]. Jedoch ist zu beachten, dass ab gewissen Umsätzen eine Businesslizenz erworben werden muss.

Bevor wir in diese Artikelserie eintauchen, stellt sich oft die Frage: Warum Unity und nicht eine andere Engine? Diese Frage ist schwierig zu beantworten, da jede Engine Stärken und Schwächen hat und auf andere Zielgruppen ausgerichtet ist. Für Windows-Entwickler, die sich bereits mit .NET und C# auskennen, hat Unity den Vorteil, dass zum Entwickeln C# auf Basis von .NET Standard 2.0 genutzt werden kann. Dabei können wir den kompletten Sprachumfang von C# 7.3 nutzen. C# 8 steht erst mit der nächsten Version von Unity, 2020.2, zur Verfügung. So kann man sich im Code direkt heimisch fühlen und sich auf die Entwicklung seiner Idee konzentrieren. Prinzipiell kann man gerade im Hobbybereich mit jeder Engine gleiche oder sehr ähnliche Ergebnisse erzielen.

Im Rahmen dieser Artikelserie wollen wir gemeinsam Unity erkunden und die ersten Schritte machen. Anstelle eines Spieles werden wir ein kleines Heimcomputermuseum erstellen. Der Akteur soll in der Lage sein, durch das Museum zu laufen, Türen zu öffnen, mit Museumsgegenständen zu interagieren und dabei Informationen über gewisse Gegenstände zu erhalten. Zu guter Letzt soll die Anwendung im Web deployt werden, sodass jeder WebGL-2-fähige Browser die Anwendung anzeigen und nutzen kann. Die Artikelserie wird durch ein GitHub-Repository begleitet, in dem der vollständige Code und das Onlinebeispiel zu finden sind [9]. Los gehts!

Installation von Unity

Unity wird über den Unity Hub installiert [8]. Der Unity Hub verwaltet mehrere Unity-Installationen mit all ihren Tools. Über den Menüpunkt Install | Add kann eine Version installiert werden.

Unity hat zwei Release-Streams: einen LTS Stream und einen TECH Stream (Abb. 1). Zweimal im Jahr wird eine offizielle Version im TECH Stream veröffentlicht, dieses Jahr 2020.1 und 2020.2. Hierbei handelt es sich um die aktuellste production-ready Version der Engine. Beim LTS Stream handelt sich um die Long-Term-Support-Version, die für Entwicklungen genutzt werden sollte, die kurz vor dem Release stehen, um Breaking Changes zu vermeiden. Beide Streams werden regelmäßig mit Bugfix-Releases versorgt. Für Abenteurer steht auch noch ein Preview-Programm mit Alpha/Beta-Versionen zur Verfügung. Diese sind aber oftmals mit Vorsicht zu genießen.

rauber_unity3d_teil1_1.tif_fmt1.jpgAbb. 1: Unity-Release-Streams [1]

In unserem Fall installieren wir die zum Zeitpunkt des Verfassens aktuellste Version: 2020.1.2f1. Da wöchentlich neue Bugfix-Releases veröffentlicht werden, kann zum Zeitpunkt des Lesens jede 2020.1-Version installiert werden. Nach der Auswahl der Version können verschiedene Module zum Plattformsupport angewählt werden (Abb. 2). Für unser Beispielprojekt sollte hier WebGL Build Support angewählt werden. Module können auch nachträglich (de-)installiert werden.

rauber_unity3d_teil1_2.tif_fmt1.jpgAbb. 2: Modulauswahl bei der Unity-Installation

Ein Klick auf Next installiert die Version. Zur Entwicklung wird noch eine IDE oder ein Editor benötigt. Da es sich bei Unity um .NET Standard 2.0 handelt, können gewohnte Editoren wie Visual Studio (Code) oder JetBrains Rider verwendet werden. Letzterer hat aktuell den besten Support für Unity.

Nach erfolgter Installation können wir im Menü den Punkt Projects | New wählen, um ein neues Projekt zu erstellen. Im darauffolgenden Dialog haben wir vier Auswahlmöglichkeiten (Abb. 3).

rauber_unity3d_teil1_3.tif_fmt1.jpgAbb. 3: Erstellung eines neuen Projekts

Bei den Punkten 2D und 3D handelt es sich um die alten Projekttemplates. Sie sollten nicht mehr verwendet werden, sind aber aus Kompatibilitätsgründen noch vorhanden. HDRP und URP stellen die aktuellen Projekttemplates dar. HDRP steht für High Definition Render Pipeline und wird für Entwicklungen genutzt, die grafisch sehr anspruchsvoll sind. Mit der HDRP entwickelte Projekte sind ausschließlich für potente Hardware wie Desktop oder Konsolen (exklusive WebGL) gedacht. Für Mobile- oder WebGL-Anwendungen ist die HDRP nicht gedacht. Dafür existiert die URP, die Universal Render Pipeline. Wie der Name schon sagt, steht diese universell zur Verfügung und kann für alle eingangs genannten Plattformen genutzt werden. Da wir unsere Anwendung als WebGL-Anwendung veröffentlichen wollen, wählen wir die URP aus und geben dem Projekt einen Namen, bspw. „Computermuseum“. Nach der Bestätigung des Dialogs dauert es einige Sekunden, bis Unity gestartet ist, da ein Beispielprojekt geladen wird (Abb. 4).

rauber_unity3d_teil1_4.tif_fmt1.jpgAbb. 4: Neues Beispielprojekt in Unity

Das Editor-Interface

Zunächst wollen wir uns mit dem Interface des Editors vertraut machen. Abbildung 4 zeigt die Standardoberfläche. Sie kann, wie man es von vielen Editoren gewohnt ist, stark an die eigenen Bedürfnisse angepasst werden, nicht nur im Layout selbst, sondern auch mit weiteren, eigenen Funktionen. Doch erst einmal beschränken wir uns auf das Defaultlayout und schauen uns genauer an, was hier zu sehen ist.

In der Mitte fällt uns bereits die Szene mit ein paar Beispielelementen auf. Sie beschreibt die Ansicht im Editor, die wir als Entwickler sehen. Mit der Maus können wir mit der Szene agieren. Icons (sogenannte Gizmos) zeigen uns weitere Elemente an, die keine eigene visuelle Repräsentation haben, wie z. B. die Kamera. Über das Scrollrad können wir in die Szene hinein- und aus ihr herauszoomen. Mit der linken Maustaste können wir die Szene verschieben. Halten wir dabei die ALT-Taste gedrückt, wird die Szene gedreht. Rechts neben dem Tab der Scene findet sich ein Tab mit der Aufschrift Game. Diese Ansicht zeigt, was der Spieler in unserem Spiel sehen wird. Der Editor wird automatisch von Scene auf Game wechseln, wenn das Spiel im Editor gestartet wird. Warum die Scene im Gegensatz zu Game eine völlig andere Ansicht anzeigt, klären wir gleich.

Weiter geht es oben in der Mitte. Dort finden sich drei Buttons. Sie dienen zum Starten/Stoppen, Pausieren und zum Rendern eines Frames, wenn das Spiel pausiert ist. Links davon finden sich verschiedene Manipulationstools der Elemente in der Szene (Abb. 5). Von links nach rechts sind folgende Tools vorhanden:

  • Hand-Tool: Verschieben der Ansicht in der Szene (Tastenkürzel: Q)

  • Move-Tool: Bewegen von ausgewählten Elementen (Tastenkürzel: W)

  • Rotate-Tool: Drehen von ausgewählten Elementen (Tastenkürzel: E)

  • Scale-Tool: Manipulation der Größe der ausgewählten Elemente (Tastenkürzel: R)

  • Rect-Tool: Manipulationen speziell für 2D- oder UI-Elemente (Tastenkürzel: T)

  • Move+Rotate+Scale-Tool: Kombination der drei genannten Tools (Tastenkürzel: Y)

  • Custom-Editor-Tool: Manche Objekte bieten weitere, eigene Tools an, die mit diesem Menü ausgewählt werden können. Diese werden wir im Laufe des Artikels nicht weiter beachten.

rauber_unity3d_teil1_5.tif_fmt1.jpgAbb. 5: Manipulationstools

Unter den Manipulationstools findet sich der Tab Hierarchy (Abb. 6). Er z...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang