개요
언리얼에서 게임 규칙이나 씬 이동, 게임 종료에 대한 로직 등 게임의 전체적인 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 |