Nach Namen suchen
Teil des Abschnitts Unity-Scripting: Grundlagen der Unity-Journey von Coddy. Lektion 56 von 85.
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 verknüpfen, allerdings werden dafür alle Objekte 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 außerdem inaktive (ausgeblendete) Objekte. Eine erfolglose Suche gibt stillschweigend null zurück, und 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.
- Setze in
Start()goal = GameObject.Find("Goal").transform;. - Gib in
Update()beiInput.GetKeyDown(KeyCode.Space)"Distance to goal: " + Vector3.Distance(transform.position, goal.position)aus.
Drücke „Spielen“ und dann die Leertaste: In der Console wird Distance to goal: 5 angezeigt. Klicke dann auf „Prüfen“.
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.
}
}
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