• info@noobygames.de

How To: ScriptableObject automatisch erstellen

How To: ScriptableObject automatisch erstellen

Wie kann man eigentlich ein ScriptableObject automatisiert erzeugen?

Diese Fragen und weitere werde ich mit kleinen Tutorials hier im Blog beantworten. Ich habe mir für diesen Zweck ein Plugin organisiert, welches Code-Embedding vereinfacht. Nun wenden wir uns aber den ScriptableObject zu.

 

1. Erstellen eines ScriptableObjects

Zuerst benötigen wir ein ScriptableObject. Dazu habe ich beispielhaft ein sehr simples erzeugt. Unser ScriptableObject muss natürlich von ScriptableObject erben. Dazu habe ich noch 2 float Felder für den Schaden und die Geschwindigkeit eingefügt, sowie ein Feld, welches das ParticleSystem hält.

1
2
3
4
5
6
7
8
9
10
// MetaData for all Projectiles in the game
public class ProjectileMetaData : ScriptableObject {
// Damage of the Projectile
public float Damage = 1;</div>
// Speed of the Projectile
public float Speed = 10;

// ParticleSystem of the Projectile
public GameObject ParticleSystem;
}

 

2. Erstellen des EditorScripts

Das folgende Snippet sorgt dafür, dass im UnityEditor ein neuer Tab(„ScriptableObjects“) eingefügt wird. Dort gibt es die unterpunkte „Create“ und „Projectile“. Klickt man nun auf Projectile wird die Methode „CreateMyAsset“ ausgeführt.

Tab

Tab

namespace Editor.ProjectileCreater {

public class MakeScriptableObject {
  [MenuItem("ScriptableObjects/Create/Projectile")]
  public static void CreateMyAsset() {
    // Erzeugt eine Instanz vom Typ "ProjectileMetaData".
    ProjectileMetaData asset = ScriptableObject.CreateInstance<ProjectileMetaData>();
    // Erzeugt ein Asset mit hilfe der gerade erzeugten Instanz.
    // Wichtig: Die gesamte Ordnerstruktur muss im Projekt existieren, sonst gibt es einen Fehler.
    AssetDatabase.CreateAsset(asset, "Assets/Scripts/Projectiles/ScriptableObjects/NewScriptableObject.asset");
    // Schreibt das Asset auf die Festplatte
    AssetDatabase.SaveAssets();
    // Setzt den Fokus
    EditorUtility.FocusProjectWindow();
    // Selektiert das gerade erzeugte Objekt
    Selection.activeObject = asset;
  }
}
}

 

3. Das Ergebnis

Das ScriptableObject wurde als Asset im gewünschten Pfad erzeugt und kann nun benutzt werden. Das ist auch schon die gesamte Magie daran. Das obige Script kann angepasst werden um beliebige ScriptableObjects zu erzeugen. Dafür muss nur der generische Typparameter gegen einen anderen getauscht werden und falls notwendig kann der Pfad angepasst werden.

ProjectView

ProjectView

ttheel

%d Bloggern gefällt das:

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklären Sie sich damit einverstanden.

Schließen