Referencje lepsze niż wyszukiwanie
Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 59 z 85.
Skrypt może uzyskać dostęp do innego obiektu na cztery sposoby: przez pole ustawione w Inspectorze, GameObject.Find według nazwy, wyszukiwanie po tagu lub FindAnyObjectByType według typu. W przypadku obiektu, który znajduje się w scenie od samego początku, kod Unity korzysta z pola Inspectora z trzech powodów:
- Szybkość. Odwołanie jest przypisywane przed uruchomieniem gry. Każde wyszukiwanie przeszukuje obiekty sceny, a wyszukiwanie w
Update()odbywa się przy każdej klatce. - Bezpieczeństwo. Nazwa w ciągu znaków przestaje działać, gdy ktoś zmieni nazwę obiektu: Find zwraca
null, a błąd pojawia się później, w dowolnym wierszu, który używa tej wartości. Puste pole Inspectora powoduje błąd UnassignedReferenceException, który wskazuje nazwę pola i skryptu. - Przejrzystość. Inspector pokazuje, od czego zależy skrypt. Wywołanie Find ukrywa tę zależność w kodzie.
// ustawiane raz w Inspectorze: bez wyszukiwania, a zmiana nazwy niczego nie zmienia
[SerializeField] private Transform door;
// wyszukiwane w każdej klatce; po zmianie nazwy drzwi wynik to null
void Update()
{
Transform d = GameObject.Find("Door").transform;
}Wyszukiwanie przydaje się w niektórych sytuacjach: w przypadku obiektów, które istnieją dopiero po uruchomieniu gry, takich jak obiekt utworzony podczas rozgrywki, oraz skryptów, które muszą działać w każdej scenie. Nawet wtedy wyszukaj obiekt raz w Start() i zachowaj wynik w polu.
Spróbuj swoich sił
Ta lekcja nie zawiera wyzwania z kodem.
Wszystkie lekcje w sekcji Podstawy skryptów w Unity
1Podstawy C# w Unity
Witaj, UnityZmienneLiczby dziesiętne wymagają fTekst w konsoliZmienne, które pamiętająIf i elsePorównywanie liczbPowtórka: Zbieracz monet4Wejście
Naciśnięty, przytrzymany, zwolnionyOsiePrzyciski z nazwamiPrzyciski myszyPowtórka: naładowany skok7Pętle i metody
Powtarzaj za pomocą forPętle wewnątrz pętliNapisz metodęMetody, które zwracają wynikTablicePowtórka: schody10Wyszukiwanie obiektów
Wyszukiwanie po nazwieTagiWyszukiwanie po typieReferencje lepsze niż wyszukiwanieNull w UnityPowtórka: najbliższa moneta13Projekt: Unikaj bloków
BiegaczBloki z nieba2Wpraw to w ruch
Umieść sześcianPoruszaj w każdej klatceObracaj co sekundęSteruj za pomocą klawiszyPodsumowanie: Prowadź sześcian5Wektory
Dodawanie wektorówKierunkiPrzestrzeń lokalna i globalnaPrędkość po przekątnejOdległość między obiektamiVector3 to strukturaPodsumowanie: pilot drona8Obiekty gry i komponenty
Referencje w InspectorzePobieranie komponentuBrakujące komponentyDodawanie komponentuRequireComponentPokazywanie i ukrywaniePowtórka: włącznik światłaPoćwicz samodzielnie: Edytor online Unity