Tutorial C# – RPG Basics – Abilities – # 2

04 Sep 2013 Posted by: Comments: 0 In: Allgemein, C#, Programming, Tutorial, Unity3D

Hallo zusammen!

Weiter geht es mit dem AbilitySystem. Wir nehmen ein paar kleinere Änderungen vor, die uns das Leben als Spieleentwickler erleichtern werden. Da ich in Teil 1 bereits erwÄhnt habe, dass wir unsere Abilities überarbeiten werden und auf eine andere Art und Weise laden.
Die Variante, die mir persönlich am meisten zusagt, ist die der ScriptableObjects.

Was genau das ist kann man hier im Forum in diversen Tutorials erfahren, zB. hier! Daher will ich uns nicht lÄnger damit aufhalten ScriptableObjects zu erklÄren, sondern wie wir sie in der Praxis für unsere Abilities nutzen. Diejenigen, die ScriptableObjects bereits kennen werden eine Ahnung haben was nun passieren wird;)

Zuersteinmal verÄndern wir unsere Ability Klasse geringfügig:

Wichtig ist, dass wir die UnityEngine Bibliothek einbinden, sonst wirds nichts mit dem ScriptableObject. Außerdem erbt Ability jetzt von ScriptableObject. Auch das ist wichtig.
Außerdem ist die Klasse nun serialisierbar… auch hier: was genau das bedeutet ist bereits in Tutorials abgedeckt. Siehe hier!

Die Idee ist nun folgende: ScriptableObjects lassen sich im Projekt als Assets ablegen, Ähnlich wie Prefabs. Dies ermöglicht uns einfach den Unity DragnDrop Workflow beizubehalten um so die Assets zu kopieren und zu verÄndern. Damit lassen sich in kürzester Zeit x Abilities erstellen, ganz ohne dass wir jedes mal eine neue Klasse anlegen müssen etc. Die Designer werden sich freuen!

Wie erstellt man nun dieses Asset? Auch dazu gibts ausführlicheres im Forum (Siehe Link oben) und ich spare mir die Details. Wir benötigen auch nur ein kleines Script, das alles weitere über die Hierachy gemacht werden kann ohne einen großen Manager zu erstellen etc. Für den Anfang reicht das auch.

Das Script:

ACHTUNG: die Ordnerhierachie müsst ihr schnell selber erstellen UND dieses Script muss in einen Ordner namens Editor! Also den auch noch schnell erstellen.
Im Menu erscheint nun ein weiterer Punkt, unter dem ihr Create/Ability findet.
Ist die Ordnerstruktur korrekt, sprich der Pfad zum Zielordner, könnt ihr nun per Klick ein Asset erstellen. Dieses Asset kann nun umbenannt werden.
Nennen wir es wieder „Mortal Strike“ und wie ihr schon seht lassen sich diverse Variablen per Inspector einstellen.
_name : Mortal Strike
_coolDown : 1,3
_damageModifier : 1,5

Danach gibts Copypasta – einfach das Asset anklicken und Strg + D .
Jetzt noch umbennen, einstellen:
_name : Heroic Strike
_coolDown : 3.0
_damageModifier : 2,2

Wir haben nun 2 Abilities und auf diese Weise noch x Andere machen! Schnell und einfach.

Was wir nun noch machen müssen: Abilities laden und zwar nur anhand (ich erwÄhnte es eingangs) an ihrem Namen!

Dafür gehen wir wieder in die Player.cs und modifizieren 2 Dinge:

und folgendes

:

Jetzt noch die Abilities im Inspector ins abilityInit ziehen.

Tada!

Weiter geht´s im nächsten Teil!

Dropbox Link

Leave a Comment!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.