Lobby 레벨에서 캐릭터 직업 4가지 중 하나를 선택하면, Battle 레벨로 ServerTravel 을 하고자 한다.
이런 경우, 일반 Server Travel 을 사용하면 PlayerState가 초기화된다.
근데 Seamless Travel 을 사용하면, PlayerState와 같은 플레이어 관련 데이터가 유지되므로, 레벨 전환 후에도 플레이어의 상태를 유지할 수 있다고 한다. 이 방법을 사용하여 캐릭터를 Lobby 레벨에서 Battle 레벨로 넘겨보고자 하는 중이다.
virtual void PostSeamlessTravel() override;
LogGameMode: Warning: ProcessServerTravel: Seamless travel is disabled in PIE, set net.AllowPIESeamlessTravel=1 to enable.
[/Script/Engine.NetworkSettings]
net.AllowPIESeamlessTravel=True
근데... SeamlessTravel에서도 PlayerState가 초기화된다.
CopyProperties 메서드를 활용하여 PlayerState의 데이터를 심리스 트래블 중에 복사할 수 있다고 한다. 아래 함수를 재정의 해주자!
virtual void CopyProperties(class APlayerState* PlayerState) override;
void AGOPlayerState::CopyProperties(APlayerState* PlayerState)
{
Super::CopyProperties(PlayerState);
AGOPlayerState* MyPlayerState = Cast<AGOPlayerState>(PlayerState);
if (MyPlayerState)
{
MyPlayerState->SelectedCharacterClass = SelectedCharacterClass;
}
}
참고한 답변은 아래 포럼의 답변이다.
아래 포스트도 읽으면 좋을 것 같다!! 킵해두기- 별별
아직 보이지 않는다면 로딩 중이니 잠시만 기다려주세요!!