Was ist Unity?
In diesem Blogpost berichte ich über Unity. Unity ist ein Game Development Engine, was man kostenlos und einfach installieren kann. Somit kann jede individuelle Person kostenlos ein Spiel programmieren. Die Spiele können sowohl in 2D, als auch in 3D programmiert werden. Wegen diesen Vorteilen und der Programmiersprache C#, was in Unity für die Programmierung verwendet wird und eine moderne weit verbreitete Programmiersprache ist, gehört Unity zu einer der besten Engine für als Game Development.
Asset Store
Unity hat auch den Asset Store. Der Unity Asset Store ist eine grosse Library mit kostenlose und kostenpflichtige assets, die von Unity Technologies als auch von Mitglieder der Community erstellt wurden. Es ist eine grosse Vielfalt an Assets verfügbar. Von Texturen, Models und Animationen bis hin zu ganzen Projektbeispielen, Tutorials und Extension Assets. Das Zugreifen auf die Assets erfolgt ganz einfach über eine Schnittstelle, was im Unity Editor eingebaut wurde und direkt ins Projekt heruntergeladen und importiert wird.
Kosten
Unity Personal ist an sich kostenlos. So kann jeder Developer oder auch Schüler ein Spiel erstellen. Dennoch hat sie immer noch eine Begrenzung. Allgemein muss man Unity Plus kaufen, wenn das eigene Spiel $100’000+ pro Jahr macht. Zusätzlich hat man mit Unity Plus noch zusätzliche Asset Store Project Packages und auch einen Monat Zugriff auf Unity’s Certification Courseware, was ein Kurs ist und man auch mit Unity “gepartnert” ist. Unity Plus kostet $40 USD pro Monat. Es gibt auch weitere Pläne, die man kaufen kann: https://store.unity.com/de/compare-plans
Code
Die einfachste und am meist verbreitete Programmiersprache, die man in Unity beim Programmieren braucht, ist C#. Man kann ganz einfach Visual Studio für das C# Code benutzen und mit den Features, wie z.B. IntelliSense, Debugging usw. profitieren.
Wenn man mit C# nun programmieren will, trifft man zuerst die folgende Klasse: MonoBehaviour. MonoBehaviour ist die Basisklasse, was jede C# Script in Unity standardmäßig erbt. Die Klasse MonoBehaviour bietet das Framework an, mit dem man das C# Script an ein GameObject anbinden kann, sowie Hooks für wichtige und sehr nutzvolle Events, wie z.B. Start und Update, angeboten bekommt.
Coroutines
Die MonoBehaviour Klasse ermöglicht auch das Starten, Stoppen und Verwalten (start, stop, manage) von Coroutines, was eine Art ist, Asynchrones Code zu schreiben. Coroutines sind so wie Funktionen, die eine Ausführung von Code unterbrechen können, ein return Wert an Unity zurückgeben und danach im folgenden Frame dort weitermachen, wo sie aufgehört haben. Mit einem Beispiel kann man es aber besser verstehen: Nehmen wir mal an, man will im Spiel die Hintergrundfarbe in zwei Sekunden von Schwarz zu weiss färben. In den zwei Sekunden wird die Schwarze Farbe immer heller, bis es weiss wird. In Englisch heisst es einfach “fade out”. Wenn man das nun mit einer normalen Methode machen möchte, könnte man schon ahnen, was geschieht: Die “FadeOut” Methode wird in ein Frame aufgerufen und vollständig ausgeführt, ohne ein Update im UI. Auch wenn es im Code die Schwarze Farbe in zwei Sekunden immer heller macht, wird es im Spiel direkt zu weiss verfärbt, da die ganze Methode in ein Frame aufgerufen wurde. Dabei helfen nun Coroutines. Um Coroutines zu benutzen, muss man einfach, in diesem Beispiel, das Return-Value der “FadeOut” Methode von void zu IEnumerable ersetzen. Da es nun eine Enumerable zum returnen braucht, wird hier einfach yield benutzt und null zurückgegeben. Diese Methode wird nicht mehr standardmäßig aufgerufen, sondern wird durch eine andere Methode aufgerufen: StartCoroutine(Methodname, params…).
IEnumerator Fade()
{
for (float ft = 1f; ft >= 0; ft -= 0.1f)
{
Color c = renderer.material.color;
c.a = ft;
renderer.material.color = c;
yield return null;
}
}
void Update()
{
if (Input.GetKeyDown("f"))
{
StartCoroutine("Fade");
}
}