Menu
CoddyTech

SerializeField

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 8 von 67.

Ein public-Feld erfüllt zwei Aufgaben zugleich: Es wird im Inspector angezeigt, und jedes andere Skript kann es lesen und ändern. Oft möchtest du nur Ersteres. Ein private-Feld (der Standard in C#) kann nur von seiner eigenen Klasse geändert werden, sodass kein anderes Skript es beeinträchtigen kann. Unity zeigt es jedoch nicht im Inspector an.

[SerializeField] weist Unity an, ein privates Feld trotzdem zu speichern und anzuzeigen. Die Reichweite dieses Geschützturms wird für jeden Geschützturm im Inspector festgelegt, und kein anderes Skript kann darauf zugreifen:

[SerializeField] private float range = 5f;

void Start()
{
    Debug.Log("Range: " + range);
}

So verwaltet der Großteil des Unity-Codes seine Einstellungen: privat, mit [SerializeField]. Achte auch auf den umgekehrten Fall: Wenn du ein Feld privat machst und das Attribut vergisst, verwirft Unity unbemerkt den in der Szene gespeicherten Wert. Für das Feld wird dann wieder die Zahl aus dem Code verwendet, ohne dass dich ein Fehler darauf hinweist.

challenge icon

Aufgabe

Einfach

Die height der Lampe ist öffentlich, sodass jedes Skript sie bewegen könnte. Mache height privat, lasse sie aber im Inspector, der sie auf 4 setzt. Die Lampe muss weiterhin auf der im Inspector festgelegten Höhe hängen.

Drücke Play und sieh dir die Höhe der Lampe an, dann Check.

Probier es selbst

using UnityEngine;

public class LampHeight : MonoBehaviour
{
    public float height = 1f;

    void Start()
    {
        transform.position = new Vector3(0, height, 0);
    }
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen des Scripting in Unity