Porównanie GameObjects z UObjects i Aktorami
W Unity GameObjects reprezentują programowalne obiekty w grze. GameObject sam w sobie nie spełnia zbyt wielu zadań, działa jako kontener dla Components (Komponentów), takich jak Light (Światło) i Mesh (Siatka), które dostarczają określonych funkcjonalności. Każdy obiekt GameObject ma dołączony komponent Transform (Przekształcenie), który reprezentuje jego położenie i orientację w świecie.
W silniku Unreal Engine (UE) UObjects reprezentują programowalne obiekty w świecie gry. Klasa UObject działa jako wspólna klasa bazowa dla większości klas w UE. Takie podejście obsługuje Unreal Engine Reflection System (System odbić w Unreal Engine), który umożliwia automatyczne odśmiecanie pamięci i zapewnia różne inne korzyści.
Aktor, podklasa UObject, to bliski odpowiednik GameObject w Unity. Aktorzy obsługują Component System (System komponentów) UE i przekształcenia (USceneComponent), dzięki czemu można ich rozmieszczać w świecie. Kluczową różnicą w porównaniu z Unity jest to, że można bezpośrednio rozszerzać funkcjonalność aktora, zamiast opierać się wyłącznie na komponentach.
Jeśli implementacja obiektu nie wymaga dodatkowej funkcjonalności jednej z podklas UObject, można rozszerzyć UObject bezpośrednio, aby uzyskać mniej obciążającą implementację. Patrz Objects (Obiekty), aby znaleźć więcej informacji na temat UObjects.
Porównanie systemów komponentów
Podobnie jak Unity, UE ma system komponentów, który można wykorzystać do dołączenia do obiektów gry funkcjonalności wielokrotnego użytku. Można tworzyć własne komponenty od podstaw lub rozszerzyć jeden z wielu dostępnych w UE. Jednak zanim zacznie się ich używać, dobrą praktyką będzie zrozumienie, czym są główne typy komponentów:
Komponent aktora – podstawowy typ komponentu, który dołącza się do aktora. Komponenty aktora nie mają przekształcenia, co oznacza, że nie mają fizycznej lokalizacji w świecie. Są użyteczne dla zachowań abstrakcyjnych, takich jak zarządzanie ekwipunkiem czy atrybutami.
Komponent sceny – typ komponentu aktora, który dodaje przekształcenie do określania pozycji w świecie. Komponenty sceny nie mają reprezentacji wizualnej, dlatego nadają się do zachowań opartych na lokalizacji, które nie są widoczne, takich jak siły fizyki, kamery lub dźwięk.
Komponent prymitywu – typ komponentu sceny, który dodaje reprezentację wizualną i fizyczną. Nadają się do renderowania elementów wizualnych i wolumenów kolizji.
W Unity można tworzyć złożone obiekty GameObjects z relacją nadrzędny-podrzędny. Przykładowo obiekt nadrzędny może mieć wiele obiektów podrzędnych z ich własnymi siatkami, obiektami kolizyjnymi lub zachowaniami.
W UE można budować aktorów o podobnej hierarchii, korzystając z komponentów zamiast aktorów podrzędnych, aby poprawić wydajność i zmniejszyć zużycie pamięci.
Patrz Components (Komponenty) w UE, aby znaleźć więcej szczegółowych informacji.
Porównanie funkcji Update() i Tick()
W Unity aktualizacje komponentów są napędzane głównie funkcjami Update() i FixedUpdate() w MonoBehaviour.
W UE aktorzy wykorzystują funkcję Tick() (domyślnie włączoną), a komponenty opcjonalnie wykorzystują funkcję TickComponent() (domyślnie wyłączoną).
Domyślnie tykanie zachodzi raz na klatkę. Można określić inny interwał tykania, przypisując grupę tyknięć, taką jak TG_DuringPhysics. Można także określić zależność tyknięcia, aby zapobiec tyknięciom do momentu zakończenia innej określonej funkcji tyknięcia.
Więcej szczegółowych informacji można znaleźć w następujących źródłach:
Struktura rozgrywki
Framework rozgrywki Unreal Engine to kolekcja klas, zawierająca aktorów i komponenty, która zapewnia modułowy fundament, na którym można budować swoją rozgrywkę.
Porównując implementowanie rozgrywki w Unity do używania frameworku rozgrywki w UE, widać więcej różnic niż podobieństw. Zalecamy zapoznanie się z sekcją Gameplay Framework (Framework rozgrywki), aby dowiedzieć się więcej o tym, jak opisane w tym dokumencie koncepcje mają się do tego frameworku. Ponadto poniższe sekcje omawiają kilka ważnych klas frameworku wysokopoziomowo.
Ważne podklasy UObject
Poziom – zawiera zestaw obiektów gry, z których zrobiony jest poziom w grze. Poziomy są podobne do Scenes w Unity.
Zasób danych – używany do definiowania zasobów, które przechowują dane dla gry. Zasoby danych są podobne do ScriptableObjects w Unity.
Ważne podklasy aktorów
Pionek – działa jak „agent” w świecie. Kontroler może przejąć kontrolę nad pionkiem.
Postać – typ pionka reprezentującego postać humanoidalną, który zapewnia podstawowe funkcje ruchu i kolizji.
Kontroler – odpowiedzialny za kierowanie pionkami po przejęciu nad nimi kontroli.
PlayerController – służy do zapewnienia lokalnego sterowania pionkiem ludzkiemu graczowi.
AIController – służy do sterowania pionkiem za pomocą sztucznej inteligencji.
Tryb gry – aktor-menedżer, który definiuje i ustawia całokształt gry.
Stan gry – zawiera informacje o stanie gry.
Stan gracza – zawiera informacje o stanie gracza. Stan gry śledzi wszystkie wystąpienia stanu gracza w obrębie tablicy.