Unreal

[Unreal5]GameInstance와 GameModeBase

usingsystem 2024. 5. 22. 21:45
728x90

https://docs.unrealengine.com/4.26/ko/InteractiveExperiences/Framework/QuickReference/

 

게임플레이 프레임워크 간단 레퍼런스

게임의 프레임워크를 이루는 게임 규칙, 캐릭터, 컨트롤러, 유저 인터페이스 등에 대한 클래스 간단 개요입니다.

docs.unrealengine.com

 

GameInstance

GameInstance는 게임의 전반적인 상태를 관리합니다. 게임이 실행되는 동안 종료되지 않으며, 레벨 간의 전환에도 유지됩니다. 싱글톤 역활

  • 전역 데이터 관리: 게임 전반에 걸쳐 유지되어야 하는 데이터를 저장합니다. 예를 들어, 플레이어의 프로필, 설정, 또는 레벨 간에 공유되는 데이터를 관리합니다.
  • 게임 세션 관리: 멀티플레이어 세션이나 네트워크 연결 상태를 관리합니다.
  • 초기화 및 종료: 게임 시작 시 초기화하고, 종료 시 클린업 작업을 수행합니다.
class UMyGameInstance : public UGameInstance
{
    GENERATED_BODY()

public:
    virtual void Init() override;
    virtual void Shutdown() override;

    UPROPERTY(BlueprintReadWrite, Category = "PlayerData")
    int32 PlayerScore;
};

블루프린터에서 GameInstance사용설정

블루프린터용 GameInstance를 만들고 ProjectSetting에 Project - Maps & Modes에서 직접만든 instance 변경한다.

 

GameModeBase

GameModeBase는 각 레벨에서의 게임 규칙과 흐름을 관리합니다. 게임의 규칙, 승리 조건, 플레이어 스폰 등의 작업을 담당합니다.

  • 게임 규칙 정의: 각 레벨에서의 게임 규칙과 승리 조건을 설정합니다.
  • 플레이어 관리: 플레이어의 스폰 위치를 결정하고, 플레이어가 죽었을 때의 행동을 정의합니다.
  • 게임 흐름 제어: 레벨의 시작, 중지, 종료를 관리합니다.
class AMyGameModeBase : public AGameModeBase
{
    GENERATED_BODY()

public:
    virtual void StartPlay() override;

    UPROPERTY(BlueprintReadWrite, Category = "GameRules")
    int32 MaxPlayers;

    UFUNCTION(BlueprintCallable, Category = "GameRules")
    void CheckWinCondition();
};

블루프린터에서 GameMode사용설정

World Settings의 Game Mode에서 만든 GameMode로설정

비교

  • 범위:
    • GameInstance: 게임 전체를 아우르며, 모든 레벨에 걸쳐 유지됩니다.
    • GameModeBase: 특정 레벨에 국한되며, 각 레벨마다 다를 수 있습니다.
  • 역할:
    • GameInstance: 게임의 전역 상태와 데이터를 관리합니다.
    • GameModeBase: 각 레벨에서의 게임 플레이 규칙과 흐름을 관리합니다.
  • 라이프사이클:
    • GameInstance: 게임이 시작될 때 생성되고, 게임이 완전히 종료될 때 파괴됩니다.
    • GameModeBase: 각 레벨이 로드될 때 생성되고, 레벨이 언로드될 때 파괴됩니다.
728x90