FChunkDownloader을 사용하는 프로젝트을 언리얼 에디터에서 재 실행할 경우 에디터가 비 정상 종료되는 문제
FChunkDownloader을 사용하는 프로젝트을 언리얼 에디터에서 재 실행할 경우 에디터가 비 정상 종료가 된다. 그 이유는 에디터의 플레이 종료시 static 메서드인 Shutdown() 메서드을 호출 안해 주었기 때문이다.
따라서 게임 인스턴스의 Shutdown() 메서드나 그와 비슷한 메서드에서 FChunkDownloader::Shutdown()메서드을 호출해 주어야 한다.
그렇지 않으면 FChunkDownloader::Initialize()메서드의 check(PakFiles.Num() == 0);로직에서 오류가 발생하여 에디터을 비 정상 종료시킨다.
//static
void FChunkDownloader::Shutdown()
{
FChunkDownloaderModule* Module = FModuleManager::LoadModulePtr<FChunkDownloaderModule>(ChunkDownloaderModuleName);
if (Module != nullptr)
{
// may still be null
if (Module->ChunkDownloader.IsValid())
{
Module->ChunkDownloader->Finalize();
Module->ChunkDownloader.Reset();
}
}
}
레벨에 종속적인 레벨 블루프린트의 C++ 클래스 생성 방법
각 레벨에는 해당 레벨에 종속적인 레벨 블루프린트라는 블루프린트가 존재한다.
그리고 이 레벨 블루프린트을 C++코드 기반으로 하고 싶다면 그것도 가능하다.
C++클래스을 생성할 때 LevelScriptActor클래스을 생성하고 그걸 해당 레벨에서 레벨 블루프린트을 열어서 클래스 세팅에서 부모 클래스 변경에서 설정해 주면 된다.
Logo, Patch, Lobby, Loading, InGame등의 상태을 레벨 단위로 관리하고 싶다면 해당 레벨들을 만들고 레벨마다 레벨 블루프린트로 관련 로직을 구현해 줘도 좋다. GameMode을 레벨 마다 설정해서 사용할 수도 있지만 GameMode은 네트워킹 환경에서는 서버에만 존재하기 때문에 클라이언트 단에서 해줄 UI작업의 로직을 구현하기에는 제약이 존재한다.
그리고 이 것들의 현재 상태은 GameInstance클래스에서 관리해 주면 좋을듯~
enum EGameState : unit8
{
Logo,
Patch,
Lobby,
Loading,
InGame
}
'개발일지' 카테고리의 다른 글
2022/12/06 개발 일지 (0) | 2022.12.06 |
---|---|
2022/12/02 개발 일지 (0) | 2022.12.02 |
2022/11/24 개발 일지 (0) | 2022.11.24 |
2022/11/23 개발 일지 (0) | 2022.11.23 |
2022/11/22 개발 일지 (0) | 2022.11.22 |