Menu
CoddyTech

Wyszukiwanie po nazwie

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 56 z 85.

GameObject.Find("Player") przeszukuje scenę w poszukiwaniu aktywnego obiektu o dokładnie takiej nazwie i zwraca go albo null, jeśli go nie ma. Pozwala uniknąć przypisywania pola w Inspectorze, ale ma swoją cenę: przeszukuje każdy obiekt na scenie. Dlatego wywołaj tę metodę raz, w Start(), i zachowaj wynik w polu. Ta kamera bezpieczeństwa znajduje obiekt Player przy uruchomieniu gry i śledzi go w każdej klatce:

private Transform player;

void Start()
{
    player = GameObject.Find("Player").transform;
}

void Update()
{
    transform.LookAt(player);
}

Nazwa musi być dokładnie taka sama, łącznie z wielkimi literami i spacjami: "player" lub "Player " niczego nie znajdzie. Find pomija również nieaktywne (ukryte) obiekty. Nieudane wyszukiwanie po cichu zwraca null, a błąd pojawia się w następnym wierszu, który używa wyniku: tutaj .transform zgłasza wyjątek NullReferenceException. Ścieżka taka jak "Car/Wheel" znajduje obiekt Wheel, który jest elementem podrzędnym obiektu Car.

challenge icon

Wyzwanie

Średni

Łazik informuje, jak daleko znajduje się jego cel.

  1. W Start() ustaw goal = GameObject.Find("Goal").transform;.
  2. W Update(), po naciśnięciu Input.GetKeyDown(KeyCode.Space), wyświetl w dzienniku "Distance to goal: " + Vector3.Distance(transform.position, goal.position).

Naciśnij „Graj” i naciśnij spację: w konsoli pojawi się Distance to goal: 5. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

public class Beacon : MonoBehaviour
{
    private Transform goal;

    void Start()
    {
        // Znajdź obiekt o nazwie Goal i zapisz jego Transform w goal.
    }

    void Update()
    {
        // Space: zapisz w logu odległość do celu.
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity