Maak scriptbare objecten in eenheid

ScriptableObject in Unity is een speciaal type klasse waarmee herbruikbare, gegevensgestuurde objecten kunnen worden gemaakt. Het wordt vaak gebruikt voor het opslaan en beheren van gamegegevens, configuraties en instellingen, maar kan ook voor verschillende doeleinden worden gebruikt, zoals het beheren van game-instellingen, het maken van datagestuurde systemen, het definiëren van karaktervaardigheden, het opslaan van dialogen of zoek naar informatie, enz. Het biedt een flexibele en efficiënte manier om gegevens in Unity projecten te organiseren en beheren.

Het belangrijkste voordeel van ScriptableObjects is dat ze een manier bieden om gegevenscontainers te maken die eenvoudig kunnen worden gedeeld en hergebruikt in meerdere scriptexemplaren. Ze kunnen worden gezien als "blueprints" voor het maken van instanties van een specifiek gegevenstype. Het is mogelijk om meerdere exemplaren van een ScriptableObject te maken en de gegevens ervan onafhankelijk te wijzigen.

Maak een scriptbaar object

ScriptableObject kan worden gemaakt in de Unity-editor en worden opgeslagen als assets in het project. In tegenstelling tot MonoBehaviour-scripts, is ScriptableObject niet gekoppeld aan GameObject in de scène, maar kan er naar worden verwezen en worden gebruikt door andere scripts.

Volg de onderstaande stappen om een ​​ScriptableObject te maken:

  • Klik in de Unity editor met de rechtermuisknop in het projectvenster en navigeer naar "Create -> C# ScriptableObject".
  • Geef het een betekenisvolle naam en open het script in de gewenste code-editor.

De klasse ScriptableObject definiëren:

  • Neem in het script over van de klasse ScriptableObject.
  • Definieer openbare velden of eigenschappen om de gegevens weer te geven die in het ScriptableObject moeten worden opgeslagen.
using UnityEngine;

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

In het bovenstaande voorbeeld definiëren we een klasse ScriptableObject met twee openbare velden: 'dataName (string)' en 'dataValue (int)'.

Het ScriptableObject in de Inspector aanpassen:

  • Gebruik attributen zoals '[SerializeField]' om specifieke velden beschikbaar te stellen aan de Unity Inspector voor wijziging, terwijl deze velden ontoegankelijk blijven voor het script dat dat ScriptableObject gaat gebruiken.
using UnityEngine;

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

    [SerializeField]
    private int dataValue;
}

Instanties van ScriptableObjects maken:

  • Klik in de Unity-editor met de rechtermuisknop in het projectvenster en selecteer "Create" om een ​​exemplaar van het ScriptableObject te maken.
  • Pas de gegevens van het gemaakte exemplaar aan in de Inspector.

Toegang krijgen tot ScriptableObject-gegevens vanuit andere scripts:

  • Maak in het MonoBehaviour-script of een ander script een openbaar of geserialiseerd veld van het type ScriptableObject en wijs dit toe in de Inspector-weergave.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;
}
  • De gegevens van de ScriptableObject-instantie zijn vervolgens toegankelijk via het toegewezen veld.
using UnityEngine;

public class MyBehaviour : MonoBehaviour
{
    public MyScriptableObject myData;

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

Conclusie

ScriptableObjects is een veelzijdige tool voor het beheren en organiseren van gegevens in gameprojecten. Door herbruikbare en aanpasbare gegevenscontainers te creëren, biedt ScriptableObjects een flexibele en efficiënte manier om configuraties, instellingen en andere niet-instance-specifieke informatie op te slaan. Met de mogelijkheid om meerdere exemplaren van een ScriptableObject te maken en hun gegevens onafhankelijk te wijzigen, wordt het eenvoudig om datagestuurde systemen te creëren, spelinstellingen te beheren, karaktervaardigheden te definiëren, dialoog- of zoektochtinformatie op te slaan, en nog veel meer. Het gebruik van ScriptableObjects verbetert de herbruikbaarheid, onderhoudbaarheid en schaalbaarheid van de Unity projecten, waardoor uiteindelijk het ontwikkelingsproces wordt gestroomlijnd en de creatie van robuustere en dynamischere games mogelijk wordt gemaakt.

Voorgestelde artikelen
Interactieve objecten creëren in eenheid
Een object maken Volg de muiscursor in eenheid
Kinetische interacties in eenheid implementeren
Laden en kasten openen met specifieke sleutels in eenheid
Pick-and-drop-systeem zonder inventaris in eenheid
Script voor het grijpen van objecten in eenheid
Geef tekst weer bij objectaanraking in eenheid