Comparación entre GameObjects, UObjects y actores
En Unity, los GameObjects representan objetos programables dentro del juego. Un GameObject no hace mucho por sí mismo; actúa como un contenedor para componentes, como Luz y Malla, que proporcionan funcionalidades específicas. Cada GameObject tiene asociado este componente Transformación que representa su posición y orientación en el mundo.
En Unreal Engine (UE), los UObjects representan objetos programables en el mundo de tu juego. La clase UObject funciona como una clase base compartida para la mayoría de las clases en UE. Este enfoque es compatible con el sistema de reflejos de Unreal Engine, que proporciona recolección automática de basura y otras ventajas.
Actor, una subclase de UObject, es muy similar al GameObject de Unity. Los actores son compatibles con el sistema de componentes y las transformaciones (USceneComponent) de UE, por lo que puedes colocarlos en el mundo. Sin embargo, una diferencia clave con respecto a Unity es que puedes ampliar la funcionalidad de un actor directamente, en lugar de depender exclusivamente de este componente.
Si la implementación de tu objeto no requiere la funcionalidad adicional de una de las subclases de UObject, puedes ampliar UObject directamente para obtener una implementación más ligera. Consulta Objetos para obtener información más detallada sobre los UObjects.
Comparación de sistemas de componentes
Al igual que Unity, UE cuenta con un sistema de componentes que puedes utilizar para añadir funcionalidades reutilizables a los objetos de tu juego. Puedes crear tus propios componentes desde cero o ampliando uno de los muchos que se proporcionan con UE. Antes de hacerlo, conviene comprender los siguientes tipos básicos de componentes:
Componente de actor: el tipo de este componente base que se adjunta a un actor. Los componentes de actor no tienen transformaciones, por lo que carecen de una ubicación física en el mundo. Son más útiles para los comportamientos abstractos, como la gestión de inventarios o atributos.
Componente de escena: un tipo de componente de actor que añade una transformación para el posicionamiento en el mundo. Los componentes de escena no tienen representaciones visuales, por lo que son adecuados para comportamientos no visuales basados en la ubicación, como fuerzas físicas, cámaras o audio.
Componente primitivo: un tipo de componente de escena que añade representación visual y física. Son adecuados para renderizar elementos visuales y volúmenes de colisión.
En Unity, puedes crear GameObjects complejos con una relación padre-hijo. Por ejemplo, un objeto padre puede tener varios objetos hijos con sus propias mallas, colisionadores o comportamientos.
En UE, puedes crear actores con una jerarquía similar utilizando este componente en lugar de actores hijo para reducir los costes de rendimiento y memoria.
Para obtener información más detallada sobre el sistema de componentes de UE, consulta Componentes.
Comparación de Update() y Tick()
En Unity, las actualizaciones de componentes se realizan principalmente mediante Update() y FixedUpdate() en MonoBehaviour.
En UE, los actores utilizan Tick() (habilitado de forma predeterminada) y este componente utiliza opcionalmente TickComponent() (deshabilitado de forma predeterminada).
Por defecto, el tic se produce una vez por fotograma. Puedes especificar otro intervalo de tics asignando un grupo de tics, como TG_DuringPhysics. También puedes especificar una dependencia de tic para evitar los tics hasta que se complete otra función de tic especificada.
Para obtener información más detallada, consulta los siguientes recursos:
Marco de jugabilidad
El marco de jugabilidad de Unreal Engine es una colección de clases, que incluyen actores y componentes, que proporciona una base modular sobre la que construir tus experiencias de juego.
Si comparas la implementación del juego en Unity con el uso del marco de jugabilidad de UE, hay más diferencias que similitudes. Por lo tanto, te recomendamos que revises la sección Marco de jugabilidad para obtener más información sobre cómo encajan los conceptos tratados en este documento en dicha estructura. Además, las secciones siguientes tratan algunas clases importantes del marco de un modo conceptual.
Subclases importantes de UObject
Nivel: contiene un conjunto de objetos de juego que conforman un nivel de tu juego. Los niveles son similares a las escenas en Unity.
Recurso de datos: se utiliza para definir los recursos que almacenan datos para tu juego. Los recursos de datos son similares a los ScriptableObjects de Unity.
Subclases importantes de actor
Peón: actúa como un «agente» dentro del mundo. Un controlador puede poseer un peón para controlarlo.
Personaje: un tipo de peón que representa a un personaje de estilo humanoide y proporciona funciones básicas de movimiento y colisión.
Controlador: responsable de dirigir a los peones después de poseerlos.
PlayerController: se utiliza para proporcionar a un jugador humano local el control de un peón.
AIController: se utiliza para controlar un peón con inteligencia artificial.
Modo de juego: un actor gestor que define y configura tu juego.
Estado del juego: contiene la información sobre el estado del juego.
Estado del jugador: contiene información sobre el estado de un jugador. El estado del juego realiza un seguimiento de todos los estados de los jugadores dentro de una matriz.