Erstellen Sie ScriptableObjects in Unity

ScriptableObject in Unity ist ein spezieller Klassentyp, der die Erstellung wiederverwendbarer, datengesteuerter Objekte ermöglicht. Es wird häufig zum Speichern und Verwalten von Spieldaten, Konfigurationen und Einstellungen verwendet, kann aber auch für verschiedene Zwecke verwendet werden, z. B. zum Verwalten von Spieleinstellungen, zum Erstellen datengesteuerter Systeme, zum Definieren von Charakterfähigkeiten und zum Speichern von dialog oder Questinformationen usw. Es bietet eine flexible und effiziente Möglichkeit, Daten in Unity Projekten zu organisieren und zu verwalten.

Der Hauptvorteil von ScriptableObjects besteht darin, dass sie eine Möglichkeit bieten, Datencontainer zu erstellen, die problemlos über mehrere Skriptinstanzen hinweg gemeinsam genutzt und wiederverwendet werden können. Man kann sie sich als "blueprints" zum Erstellen von Instanzen eines bestimmten Datentyps vorstellen. Es ist möglich, mehrere Instanzen eines ScriptableObject zu erstellen und deren Daten unabhängig voneinander zu ändern.

Erstellen Sie ein ScriptableObject

ScriptableObject kann im Unity-Editor erstellt und als Assets im Projekt gespeichert werden. Im Gegensatz zu MonoBehaviour-Skripten ist ScriptableObject nicht an GameObject in der Szene angehängt, sondern kann von anderen Skripten referenziert und verwendet werden.

Um ein ScriptableObject zu erstellen, führen Sie die folgenden Schritte aus:

  • Klicken Sie im Unity-Editor mit der rechten Maustaste in das Projektfenster und navigieren Sie zu "Create -> C# ScriptableObject".
  • Geben Sie ihm einen aussagekräftigen Namen und öffnen Sie das Skript im bevorzugten Code-Editor.

Definieren der ScriptableObject-Klasse:

  • Erben Sie im Skript von der ScriptableObject-Klasse.
  • Definieren Sie öffentliche Felder oder Eigenschaften, um die im ScriptableObject zu speichernden Daten darzustellen.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    public string dataName;
    public int dataValue;
}

Im obigen Beispiel definieren wir eine ScriptableObject-Klasse mit zwei öffentlichen Feldern: 'dataName (string)' und 'dataValue (int)'.

Anpassen des ScriptableObject im Inspektor:

  • Verwenden Sie Attribute wie '[SerializeField]', um bestimmte Felder dem Unity-Inspektor zur Änderung zugänglich zu machen, während diese Felder für das Skript, das dieses ScriptableObject verwendet, unzugänglich bleiben.
using UnityEngine;

[CreateAssetMenu(fileName = "NewData", menuName = "MyGame/ScriptableObject")]
public class MyScriptableObject : ScriptableObject
{
    [SerializeField]
    private string dataName;

    [SerializeField]
    private int dataValue;
}

Instanzen von ScriptableObjects erstellen:

  • Klicken Sie im Unity-Editor mit der rechten Maustaste in das Projektfenster und wählen Sie "Create" aus, um eine Instanz des ScriptableObject zu erstellen.
  • Passen Sie die Daten der erstellten Instanz im Inspektor an.

Zugriff auf ScriptableObject-Daten aus anderen Skripten:

  • Erstellen Sie im MonoBehaviour-Skript oder einem anderen Skript ein öffentliches oder serialisiertes Feld vom Typ ScriptableObject und weisen Sie es in der Inspektoransicht zu.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;
}
  • Auf die Daten der ScriptableObject-Instanz kann dann über das zugewiesene Feld zugegriffen werden.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;

    private void Start()
    {
        Debug.Log("Data Name: " + myData.dataName);
        Debug.Log("Data Value: " + myData.dataValue);
    }
}

Abschluss

ScriptableObjects sind ein vielseitiges Tool zum Verwalten und Organisieren von Daten in Spielprojekten. Durch die Erstellung wiederverwendbarer und anpassbarer Datencontainer bieten ScriptableObjects eine flexible und effiziente Möglichkeit, Konfigurationen, Einstellungen und andere nicht instanzspezifische Informationen zu speichern. Mit der Möglichkeit, mehrere Instanzen eines ScriptableObjects zu erstellen und deren Daten unabhängig voneinander zu ändern, wird es einfach, datengesteuerte Systeme zu erstellen, Spieleinstellungen zu verwalten, Charakterfähigkeiten zu definieren, Dialog- oder Questinformationen zu speichern und vieles mehr. Die Verwendung von ScriptableObjects verbessert die Wiederverwendbarkeit, Wartbarkeit und Skalierbarkeit der Unity-Projekte, was letztendlich den Entwicklungsprozess rationalisiert und die Erstellung robusterer und dynamischerer Spiele ermöglicht.

Empfohlene Artikel
So lassen Sie ein Objekt in Unity dem Mauszeiger folgen
Erstellen interaktiver Objekte in Unity
Erstellen eines Revolver-Controllers in Unity
Erstellen eines Puzzlespiels in Unity
Erstellen eines von Pac-Man inspirierten Spiels in Unity
So spielen Sie Videodateien in Unity ab
Erstellen eines Jagdsimulators in Unity