게임의 전체적인 흐름
게임의 시작부터 종료까지 수행하는 단계를 의미한다.
게임 플로우
플레이어가 게임을 시작해서 진행하고 끝내는 과정에서 발생하는 모든 상호작용
GameState
GameMode
게임 규칙
게임시작 (게임 시작 버튼)
BeginPlay() - StartLevel() - Open BasicLevel
레벨에 40개 아이템 랜덤 소환
코인 아이템을 다 먹은 경우 바로 다음 레벨로 넘어감
30초 시간이 주어지고 타임 오버가 되도 바로 다음 레벨로 넘어감
체력이 0이 되면 바로 게임 오버
게임 종료 이후 재시작 (재시작 버튼)
새 레벨이 로드될 때마다 새로 생성/초기화 되는 클래스
레벨이 바뀌어도 유지되는 클래스
레벨이 새로 오픈될때마다 GameState도 같이 만들어지면서 BeginPlay() 실행된다.
게임의 스코어나 레벨을 GameState의 생성자에서 초기화하게 되면 새로운 레벨을 시작할 때마다 초기화되어 이전 정보가 날아간다.
👉 Game Instance에 전역 정보를 저장하고 관리한다.
Game State에서 스코어나 레벨을 업데이트하거나 가져올 때 Game Instance를 통해서 작업을 수행한다.
void ACH3_GameState::AddScore(int32 Amount)
{
if (UGameInstance* GameInstance = GetGameInstance())
{
UCH3_GameInstance* CH3_GameInstance = Cast<UCH3_GameInstance>(GameInstance);
if (CH3_GameInstance)
{
CH3_GameInstance->AddToScore(Amount);
}
}
}
출처: 스파르타코딩 내일배움캠프