Nach Namen finden
Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 42 von 67.
GameObject.Find("Player") durchsucht die Szene nach einem aktiven Objekt mit genau diesem Namen und gibt es zurück, oder null, wenn es keines gibt. Dadurch musst du kein Feld im Inspector zuweisen, allerdings wird dafür jedes Objekt in der Szene durchsucht. Rufe die Methode daher einmal in Start() auf und speichere das Ergebnis in einem Feld. Diese Überwachungskamera findet den Player beim Spielstart und beobachtet ihn in jedem Frame:
private Transform player;
void Start()
{
player = GameObject.Find("Player").transform;
}
void Update()
{
transform.LookAt(player);
}Der Name muss exakt übereinstimmen, einschließlich Großbuchstaben und Leerzeichen: Mit "player" oder "Player " wird nichts gefunden. Find überspringt auch inaktive (verborgene) Objekte. Eine erfolglose Suche gibt stillschweigend null zurück; der Fehler tritt in der nächsten Zeile auf, die das Ergebnis verwendet: Hier löst .transform eine NullReferenceException aus. Ein Pfad wie "Car/Wheel" findet das Wheel, das ein untergeordnetes Objekt von Car ist.
Aufgabe
MittelDer Rover meldet, wie weit sein Ziel entfernt ist.
- Suche in
Start()das Objekt mit dem NamenGoalund speichere dessen Transform ingoal. - Gib jedes Mal, wenn die Leertaste gedrückt wird, die Entfernung vom Rover zum Ziel aus, etwa als
Distance to goal: 5.
Das Ziel kann sich bewegen, miss die Entfernung also in dem Moment, in dem die Leertaste gedrückt wird.
Drücke Play, klicke ins Spiel und drücke die Leertaste, dann Check.
Probier es selbst
using UnityEngine;
public class Beacon : MonoBehaviour
{
private Transform goal;
void Start()
{
// Finde das Objekt namens Goal und speichere dessen Transform in goal.
}
void Update()
{
// Space: Gib die Entfernung zum Ziel im Log aus.
}
}
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
1Dein erstes Skript
Hallo, UnityPlatziere den WürfelBewege dich in jedem FrameDrehe dich jede SekundeSteuere mit den TastenRückblick: Steuere den Würfel4Vektoren
Vektoren addierenRichtungenLokaler und globaler RaumDiagonale GeschwindigkeitAbstand zwischen ObjektenVector3 ist ein StructRückblick: Drohnenpilot7Projekt: Fang den Stern
Der FängerEin fallender Stern10Der Lebenszyklus eines Skripts
Awake und StartUpdate und LateUpdateOnEnable und OnDisableDie Reihenfolge im LebenszyklusRückblick: Lifecycle Logger5Transformationen und Hierarchie
Eltern und KinderSkalierungDinge ansehenAuf einen Punkt zubewegenRückblick: Umlaufender Mond8Dinge finden
Nach Namen findenTagsNach Typ findenReferenzen schlagen FindUnitys NullRückblick: Nächste Münze11Projekt: Weiche den Blöcken aus
Der LäuferFallende Blöcke6GameObjects und Komponenten
Referenzen im InspectorEine Komponente abrufenFehlende KomponentenEine Komponente hinzufügenRequireComponentEin- und AusblendenRückblick: Lichtschalter