Sposób, w jaki robi to Unity, polega na tym, że wszystkie skrypty (w twoim przypadku, kod specyficzny dla typu obiektu gry) pochodzą z klasy podstawowej MonoBehaviour
, która sama pochodzi z klasy bardziej dopasowanej do twojego przypadku Component
. Nigdy nie edytujesz (i nie masz dostępu do kodu) klasy GameObject.
Obiekt gry odpowiada za przechowywanie wszystkich tych elementów Component
. Jest również rzekomo odpowiedzialny za wywoływanie odpowiednich funkcji na nich (tj Update
.). Unity używa refleksji, aby określić, które funkcje wywołać (spójrz do sekcji „Funkcje zastępowalne” na tej stronie ), ale prawdopodobnie chciałbyś, aby były wirtualne.
Jednym z mechanizmów używanych w Unity jest pobieranie komponentów do bieżącego obiektu gry (lub jego dzieci) według typu. Istnieje kilka właściwości pomocnika, które obejmują niektóre z typowych rzeczy. Na przykład, jeśli chcesz uzyskać dostęp do Transform
komponentu obiektu gry (w celu kontrolowania położenia / obrotu / skali obiektu gry), zwykle musisz zrobić coś takiego this.GetComponent<Transform>().position
, ale zawijają to w this.transform.position
wywołanie pomocnika . Innym częstym wzorem jest dostęp do Renderer
komponentu bieżącego obiektu gry . Więc jeśli chcesz zrobić coś takiego jak zmienić materiał bieżącego obiektu gry, z innego skryptu możesz zrobić coś takiego this.renderer.material = someOtherMaterial
, a Twój obiekt gry odpowiednio się zaktualizuje.
Jednym ze sposobów, w jaki działa to w Unity, jest skonfigurowanie edytora w taki sposób, aby można było tworzyć obiekty gry w scenie, które mają już podłączone elementy. W przypadku Unity wszystkie obiekty w grze mają Transform
komponent, ale mogą także zawierać wbudowane typy, takie jak AudioListener
lub Renderer
, które działają zgodnie z oczekiwaniami. Możesz też dodać własne komponenty, które robią wszystko, co chcesz. Edytor odsłania także publiczne / szeregowalne pola w twoich komponentach, więc nie musisz tworzyć różnych skryptów, jeśli chcesz używać tego samego podstawowego kodu, ale zmieniasz kilka magicznych liczb.
Podsumowując, jest to całkiem sprytne i sugeruję pobranie bezpłatnej wersji Unity i zabawę się tym, jak skonfigurowany jest ich system skryptowy, jako całkiem niezły dowód koncepcji tego, co chcesz osiągnąć.