Tworzenie instancji i niszczenie postaci lub obiektów jest bardzo powszechne w każdej grze. Tworzenie instancji oznacza powoływanie obiektu do istnienia. Obiekty pojawiają się, pojawiają się lub generują w grze, wrogowie umierają, elementy GUI znikają, a sceny są ładowane przez cały czas w grze.
Prefabrykaty są bardzo przydatne, gdy chcesz utworzyć instancję skomplikowanych GameObjects lub kolekcji GameObjects w czasie wykonywania. W porównaniu z tworzeniem GameObjects od zera przy użyciu kodu, tworzenie instancji prefabrykatów przy użyciu kodu jest lepsze i ma wiele zalet.
Rozumiemy, czym są prefabrykaty; ponieważ prefabrykaty są uważane za ważne, aby zrozumieć, jak działa tworzenie instancji w Unity.
Prefabrykaty są jak plany obiektu GameObject. Można więc powiedzieć, że prefabrykaty to kopie obiektu GameObject, który można powielić i umieścić w scenie, nawet jeśli nie istniał on w momencie tworzenia sceny; innymi słowy, prefabrykatów można używać do dynamicznego generowania GameObjects.
Stwórzmy prefabrykat; w tym celu musisz przeciągnąć żądany obiekt GameObject z hierarchii scen do projektu Assets.
Teraz, aby utworzyć instancję GameObject, wywołujemy w naszym skrypcie metodę Instantiate(). Ta metoda jest dostępna w MonoBehaviour i przyjmuje GameObject jako parametr, więc wie, który GameObject utworzyć lub powielić. Posiada również różne zastąpienia zmiany transformacji nowo utworzonego obiektu, a także rodzicielstwa.
Utwórz teraz nowy skrypt o nazwie Instantiator.cs i skopiuj do niego następujący kod.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Instantiator : MonoBehaviour { public GameObject Diamond; // Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { Instantiate(Diamond); } } }
W powyższym programie wykorzystaliśmy metodę GetKeyDown klasy Wejście, aby sprawdzić, czy gracz w ostatniej klatce nacisnął określony przycisk. Metoda GetKeyDown() zwraca wartość true, jeśli w tej ramce zostanie naciśnięty klawisz określony w wyliczeniu KeyCode (używanym do wyświetlenia listy wszystkich możliwych klawiszy na standardowej klawiaturze).
Zapisz skrypt. A teraz utwórz pusty obiekt GameObject, klikając prawym przyciskiem myszy scenę na karcie Hierarchia.
Dołącz ten plik skryptu (Instantiator.cs) do nowo utworzonego komponentu GameObject z zakładki Inspektor.
Teraz w zmiennej Diamond przeciągnij utworzony przez nas prefabrykat.
Kiedy teraz uruchomisz grę, naciśnięcie spacji spowoduje utworzenie nowego obiektu Diamentu, identycznego z tym, którego użyliśmy do stworzenia prefabrykatu. Możesz zobaczyć, że każdy diament jest tworzony w hierarchii obiektów. Powodem, dla którego nie widać ich w grze, jest to, że na razie wszystkie są tworzone dokładnie jeden nad drugim. Możesz to jednak sprawdzić na karcie Hierarchia. Za każdym razem, gdy naciśniesz spację, pojawi się ona w zakładce jako Diament (klon).