Menu
CoddyTech

Referenzen im Inspector

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

Ein Feld kann ein anderes Objekt enthalten. Gib ihm einen Typ wie Transform oder GameObject, und der Inspector zeigt ein leeres Feld an, 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 folgende Ausnahme 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. Sie nennt das Feld und das Script, sodass du weißt, welches Feld du füllen musst.

Manche Scripts sollten auch funktionieren, wenn das Feld leer ist. Unity lässt ein leeres Feld mit null vergleichen, daher prüft ein solches Script dies, bevor es das Feld verwendet. Wenn du die Zeile in Update() mit if (player != null) umschließt, bleibt eine Kamera ohne Player an ihrer Position, anstatt eine Ausnahme auszulösen.

challenge icon

Aufgabe

Mittel

Jeder Wächter geht zu seinem eigenen Posten. In der Szene weist der Inspector von Guard1 das Objekt Post1 einem Feld namens post zu. Der Posten von Guard2 ist noch nicht erstellt, daher ist sein post-Feld leer.

  • Füge dem Guard-Skript ein Transform-Feld namens post hinzu.
  • Ein Wächter geht mit einer Geschwindigkeit von speed Einheiten pro Sekunde zur Position seines Postens und bleibt dort stehen, selbst wenn der Posten später verschoben wird.
  • Ein Wächter, dessen Posten-Feld leer ist, bleibt an seinem Platz, ohne dass ein Fehler auftritt.

Drücke Play, wähle jeden Wächter in der Hierarchy aus, um sein Posten-Feld zu sehen, und klicke dann auf Check.

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.
    }
}
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