[Unreal C++] Game Flow

개요

언리얼에서 게임 규칙이나 씬 이동, 게임 종료에 대한 로직 등 게임의 전체적인 flow를 개발하는 방법에 대해서 정리했다.

 

Game State & GameMode

언리얼에서는 게임의 전역 상태나 게임 규칙등을 GameState나 GameMode에 작성할 수 있다.

보통은 다음과 같이 로직을 작성한다.

  • GameState : 게임 전역 상태 저장
  • GameMode : 서버 전용 로직, 게임 규칙

게임 규칙은 보통 GameMode에 작성하지만 싱글 플레이 게임일 경우 GameState에 작성하여도 상관없다.

 

GameState

GameState에선 현재 레벨을 시작하거나 다른 레벨로 전환에 관련된 코드를 작성하면 된다.

현재 레벨이 시작하면서 적용하고싶은 게임 규칙은 GameState::BeginPlay()

다른 레벨을 열고 싶으면 UGameplayStatics::OpenLevel(GetWorld(), TEXT("LevelName"))을 호출하면 된다.

 

 

게임 전체 상태

만약 전체 스코어나 여러 맵 중 몇 번째 맵인지 같은 정보를 저장하기 위해서는 GameState만으로는 부족하다.

GameState는 새로운 레벨이 열릴때마다 초기화 되기 때문에 레벨 전환 시 정보가 모두 날아가게 된다.

따라서 레벨 전환 시에도 유지되야하는 정보는 GameInstance에서 관리하게 한다.

class STUDYPROJECT_API UTest_GameInstance : public UGameInstance
{
	GENERATED_BODY()
public:
	UTest_GameInstance();

	int32 TotalScore;
	
	int32 CurrentLevelIndex;

	void AddToScore(int32 Amount);
};

 

GameState에서는 GetGameInstance()로 GameInstance에 접근해 Score같은 정보를 저장한다.

현재 게임에 적용되는 GameInstance를 바꾸고 싶으면 Project Setting에 Map & Mode의 GameInstanceClass를 변경해주면 된다.

 

 

'Unreal' 카테고리의 다른 글

[Unreal] Lyra - Animation Layer Interface  (0) 2025.01.27
[Unreal] Lyra - Anim Blueprint (1)  (0) 2025.01.26
[Unreal] DataTable  (0) 2025.01.22
[Unreal C++] Enhanced Input System  (0) 2025.01.21
[Unreal] State Machine  (0) 2025.01.21