Menu
CoddyTech

Referenzen im Inspector

Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 43 von 85.

Ein Feld kann ein anderes Objekt enthalten. Gib ihm einen Typ wie Transform oder GameObject, und der Inspector zeigt ein leeres Feld, das du füllst, indem du ein Objekt aus der Hierarchy darauf ziehst. Dieses Kamerascript folgt dem Objekt, das in player gezogen wurde, und bleibt dabei 3 Einheiten darüber und 6 dahinter:

public Transform player;

void Update()
{
    transform.position = player.position + new Vector3(0, 3, -6);
}

Ein leeres Feld zeigt None an, und die erste Zeile, die es verwendet, löst in jedem Frame folgenden Fehler aus: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. In der nächsten Zeile der Meldung steht, was zu tun ist: You probably need to assign the player variable of the CameraFollow script in the inspector. Die Meldung nennt das Feld und das Script, sodass du weißt, welches Feld du ausfüllen musst.

Manche Scripts sollten auch mit einem leeren Feld funktionieren. Unity behandelt ein leeres Feld beim Vergleich als gleich null, daher prüft ein solches Script es, bevor es verwendet wird. Mit if (player != null) um die Zeile in Update() bleibt eine Kamera ohne Spieler an ihrer Position, statt einen Fehler auszulösen.

challenge icon

Aufgabe

Mittel

Schick jede Wache zu dem Posten, den ihr Inspector angibt.

  1. Füge das Feld public Transform post; hinzu. Im Feld von Guard1 steht Post1; das von Guard2 ist leer.
  2. Wenn in Update() post == null gilt, führe return; aus, damit eine Wache ohne Posten stehen bleibt.
  3. Bewege sie dann mit Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime).

Drücke „Spielen“: Guard1 läuft zu seinem Posten und Guard2 wartet. Drücke dann „Prüfen“.

Probier es selbst

using UnityEngine;

public class Guard : MonoBehaviour
{
    // post: der Transform, zu dem diese Wache geht; wird im Inspector festgelegt
    public float speed = 2f;

    void Update()
    {
        // Gehe mit speed zum post. Eine Wache mit einem leeren post-Feld bleibt stehen.
    }
}

Alle Lektionen in Unity-Scripting: Grundlagen

Übe selbstständig: Unity-Playground