Menu
CoddyTech

Wyszukiwanie po nazwie

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

GameObject.Find("Player") przeszukuje scenę w poszukiwaniu aktywnego obiektu o dokładnie takiej nazwie i zwraca go albo null, jeśli takiego obiektu nie ma. Pozwala uniknąć przypisywania pola w Inspectorze, ale ma swoją cenę: przeszukuje każdy obiekt w scenie. Dlatego wywołuj tę metodę raz, w Start(), i przechowuj wynik w polu. Ta kamera bezpieczeństwa znajduje Playera po 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 też nieaktywne (ukryte) obiekty. Nieudane wyszukiwanie po cichu zwraca null, a błąd pojawia się w następnym wierszu, który używa wyniku: w tym przypadku .transform powoduje wyjątek NullReferenceException. Ścieżka taka jak "Car/Wheel" znajduje Wheel, który jest obiektem podrzędnym Car.

challenge icon

Wyzwanie

Średni

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

  • W Start() znajdź obiekt o nazwie Goal i zachowaj jego Transform w goal.
  • Za każdym razem, gdy naciśniesz spację, wyświetl w logu odległość od łazika do celu, na przykład Distance to goal: 5.

Cel może się poruszać, więc zmierz odległość w chwili naciśnięcia spacji.

Naciśnij Play, kliknij grę i naciśnij spację, a następnie Check.

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: wypisz w dzienniku odległość do celu.
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity