← SEARCHABLE ARCHIVE
Unreal Engine · 2026-07-05

Reúna características comunes con GameInstanceSubsystem

Cómo centralizamos el flujo de interfaz de usuario de ProjectDT

INTERACTIVE READING MODE →

Los artículos escritos en este blog fueron creados con el objetivo de enseñar. Además, la información del artículo puede ser incorrecta, así que tenga cuidado.

Cuando varios widgets y actores repiten la misma tarea de la interfaz de usuario, el código para encontrarse entre sí aumenta directamente. ProjectDT tiene un flujo de interfaz de usuario comúnUGameInstanceSubsystemcoleccionado.

¿Por qué utilizar el Subsistema?

UGameInstanceSubsystemtiene la misma vida útil que GameInstance y el motor lo crea automáticamente. Puede obtenerlo desde cualquier lugar a través de GameInstance sin tener que crear usted mismo un puntero Singleton separado.

UDTUISubsystem* UISubsystem =
    GetGameInstance()->GetSubsystem<UDTUISubsystem>();

if (UISubsystem)
{
    UISubsystem->ProcessSolvedProblem(
        ProblemData,
        FVector2D::ZeroVector,
        0.0f,
        100.0f
    );
}

Los efectos secundarios, como el diálogo que sigue al procesamiento de la respuesta al problema y la creación de un nodo de pizarra, se pueden recopilar en una función en lugar de copiarlos para cada widget.

No pongas todo

El subsistema también es fácilmente accesible a nivel mundial, por lo que si continúa agregando responsabilidades, se convierte en otra gran clase de administrador.

  • Las transiciones de la interfaz de usuario y los eventos de la interfaz de usuario son el subsistema de la interfaz de usuario.
  • La ranura para guardar y el SaveGame actual son Save Subsystem
  • Las reglas mundiales actuales de ganar/perder son GameMode
  • La entrada del jugador es PlayerController

Si conservas un puntero de actor temporal durante el combate solo porque tiene una vida útil prolongada, es posible que queden objetos antiguos después de moverte por el mundo. Las referencias de MainUI y WhiteBoard de ProjectDT son:TWeakObjectPtrFue almacenado como

Los subsistemas son buenos centros que conectan objetos distantes entre sí. Sin embargo, debes comprobar si la vida útil y la responsabilidad de los datos están realmente dentro del alcance de GameInstance antes de utilizarlos.