Comparando GameObjects com UObjects e atores
No Unity, GameObjects representam objetos de jogo programáveis. Um GameObject não faz muito por si só; ele atua como um contêiner para componentes, como luz e malha, que fornecem funcionalidades específicas. Todo GameObject tem um componente de transformação anexado para representar a posição e a orientação no mundo.
Na Unreal Engine (UE), os UObjects representam objetos programáveis no mundo do seu jogo. A classe UObject funciona como uma classe base compartilhada para a maioria das classes na UE. Essa abordagem oferece suporte ao Unreal Engine Reflection System (Sistema de reflexos da Unreal Engine), que fornece coleta de lixo automática e outros benefícios.
Ator, uma subclasse de UObject, é um equivalente próximo ao GameObject do Unity. Atores oferecem suporte ao Sistema de Componentes da UE e a transformações (USceneComponent), para que você possa colocá-los no mundo. No entanto, uma diferença fundamental em relação ao Unity é que você pode estender a funcionalidade de um ator diretamente, em vez de depender exclusivamente de componentes.
Se a implementação do seu objeto não exigir a funcionalidade adicional de uma das subclasses de UObject, você pode estender o UObject diretamente para obter uma implementação mais leve. Consulte informações mais detalhadas sobre UObjects em Objetos.
Comparação entre sistemas de componentes
Assim como no Unity, a UE possui um sistema de componentes que você pode usar para anexar funcionalidades reutilizáveis aos seus objetos de jogo. Você pode criar seus próprios componentes do zero ou estendendo um dos muitos fornecidos com a UE. Antes disso isso, vale a pena entender os seguintes tipos principais de componentes:
Componente de ator: o tipo base de componente que se anexa a um ator. Os componentes de ator não têm uma transformação, ou seja, não têm uma posição ou rotação física no mundo. Eles são úteis para comportamentos abstratos, como gerenciamento de inventário ou de atributos.
Componente de cena: um tipo de componente de ator que adiciona uma transformação para o posicionamento no mundo. Os componentes de cena não têm representações visuais, portanto, são adequados para comportamentos não visuais baseados em posição, como forças físicas, câmeras ou áudio.
Componente primitivo: um tipo de componente de cena que adiciona representação visual e física. São adequados para renderizar elementos visuais e volumes de colisão.
No Unity, você pode criar GameObjects complexos com uma relação pai-filho. Por exemplo, um objeto pai pode ter vários objetos filhos com suas próprias malhas, colisores ou comportamentos.
Na UE, você pode criar atores com uma hierarquia semelhante usando componentes em vez de atores filhos, para reduzir os custos de desempenho e memória.
Consulte informações mais detalhadas sobre o Sistema de Componentes da UE em Componentes.
Comparação entre Update() e Tick()
No Unity, as atualizações de componentes são conduzidas principalmente por Update() e FixedUpdate() em MonoBehaviour.
Na UE, os atores usam Tick() (habilitado por padrão), e componentes usam opcionalmente TickComponent() (desabilitado por padrão).
Por padrão, a marcação (tick) acontece uma vez por quadro. Você pode especificar outro intervalo de atualização atribuindo um grupo de marcação, como TG_DuringPhysics. Você também pode especificar uma dependência de marcação para impedir marcações até que outra função de marcação especificada seja concluída.
Consulte informações mais detalhadas nos seguintes recursos:
Framework de jogabilidade
O Gameplay Framework da Unreal Engine é uma coleção de classes, incluindo atores e componentes, que fornece uma base modular sobre a qual você pode criar suas experiências de jogabilidade.
Se você comparar a implementação de jogabilidade no Unity com o uso do Gameplay Framework da UE, há mais diferenças do que semelhanças. Sendo assim, recomendamos que você revise a seção Gameplay Framework para aprender mais sobre como os conceitos abordados neste documento se encaixam no framework. Além disso, as seções abaixo abordam algumas classes importantes do framework em um nível geral.
Subclasses de UObject importantes
Nível: contém um conjunto de objetos de jogo que compõem um nível no seu jogo. Os níveis são semelhantes a Scenes no Unity.
Ativo de dados: usado para definir ativos que armazenam dados para o seu jogo. Os ativos de dados são semelhantes a ScriptableObjects no Unity.
Subclasses de atores importantes
Pawn: atua como um "agente" dentro do mundo. Um controlador pode "possuir" um pawn para ter controle sobre ele.
Personagem: um tipo de pawn que representa um personagem de aparência humanoide e fornece funcionalidades básicas de movimento e colisão.
Controlador: responsável por direcionar os pawns após possuí-los.
PlayerController: usado para fornecer a uma pessoa jogadora humana local o controle sobre um pawn.
AIController:usado para controlar um pawn com inteligência artificial.
Modo de jogo: um ator gerenciador que define e configura o seu jogo.
Estado do jogo: contém as informações de estado do jogo.
Estado de jogador: contém as informações de estado de uma pessoa interagente. O estado do jogo rastreia todos os estados de jogador dentro de uma matriz.