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.
Aufgabe
MittelSchick jede Wache zu dem Posten, den ihr Inspector angibt.
- Füge das Feld
public Transform post;hinzu. Im Feld von Guard1 steht Post1; das von Guard2 ist leer. - Wenn in
Update()post == nullgilt, führereturn;aus, damit eine Wache ohne Posten stehen bleibt. - 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
1C#-Grundlagen in Unity
Hallo, UnityVariablenDezimalzahlen brauchen ein fText in der KonsoleVariablen, die sich etwas merkenIf und ElseZahlen vergleichenRückblick: Münzsammler7Schleifen und Methoden
Wiederholen mit forSchleifen in SchleifenEine Methode schreibenMethoden mit RückgabewertArraysRückblick: Treppe10Dinge finden
Nach Namen suchenTagsNach Typ suchenReferenzen schlagen SuchenUnitys NullRückblick: nächste Münze13Projekt: Weiche den Blöcken aus
Der LäuferBlöcke vom Himmel2Bring es in Bewegung
Platziere den WürfelBewege ihn in jedem FrameDrehe ihn jede SekundeSteuere mit den TastenRückblick: Fahre den Würfel5Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist eine StrukturRückblick: Drohnenpilot8GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter11Prefabs und Erzeugen von Instanzen
Prefabs und InstantiateNach Zeitintervall erzeugenIn einem Raster erzeugenListen von ObjektenDas Neueste zurücknehmenZerstörenZufälliges ErzeugenRückblick: Feuerwerk14Abschließende Herausforderungen
MünzmagnetDie Straße überquerenStraßenverkehrTurmbauerLanden oder verfehlen3Der Inspector
Inspector-FelderSerializeFieldFließkommazahlen und MathfInspector-AttributeRückblick: Aufzug6Transformationen und Hierarchie
Eltern und KinderHisse die FlaggeSkalierungDinge anschauenAuf einen Punkt zubewegenRückblick: Mond in Umlaufbahn9Projekt: Fang den Stern
Der FängerEin fallender Stern12Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle LoggerÜbe selbstständig: Unity-Playground