UE4

[UE4][Editor]스트리밍 레벨 조작

TigerFish 2023. 2. 28. 11:24

글을 쓰는 목적

 

에디터 타임에서 스트리밍 레벨을 로드하는 방법을 기록한다. 


작업 환경

 

UE4.26


스트리밍 레벨 조작

 

스트리밍 레벨 로드

 

1. WorldBrowser 모듈에서 LevelCollectionModel을 얻어 온다.

2. LevelCollectionModel의 GetAllLevels를 통해 FLevelModel 리스트 정보를 얻어 온다. 

3. LevelCollectionModel의 LoadLevels를 통해 로드할 레벨 로드

FWorldBrowserModule& worldBrowserModule = FModuleManager::LoadModuleChecked<FWorldBrowserModule>("WorldBrowser");
UWorld* world = GEditor->GetEditorWorldContext().World();
TWeakPtr<FLevelCollectionModel> levelCollectionModelPtr = worldBrowserModule.SharedWorldModel(world);
const FLevelModelList& levelList = levelCollection.Pin()->GetAllLevels();

TArray<TSharedPtr<FLevelModel>> loadLevelArray
for (TSharedPtr<FLevelModel> levelModel : levelList)
{
//do something
}

levelCollection.Pin()->LoadLevels(loadLevelArray);

 

레벨을 현재 수정하는 레벨로 선택

 

1. FLevelModel을 MakeCurrent를 통해 현재 조작할 레벨로 설정

TSharedPtr<FLevelModel> levelModel
levelModel->MakeLevelCurrent();

 

스트리밍 레벨 언로드

 

1. WorldBrowser 모듈에서 LevelCollectionModel을 얻어 온다.

2. LevelCollectionModel의 UnloadLevels를 통해 레벨 언로드

FWorldBrowserModule& worldBrowserModule = FModuleManager::LoadModuleChecked<FWorldBrowserModule>("WorldBrowser");
UWorld* world = GEditor->GetEditorWorldContext().World();
TWeakPtr<FLevelCollectionModel> levelCollectionModel = worldBrowserModule.SharedWorldModel(world);

TArray<TSharedPtr<FLevelModel>> unloadLevelArray
levelCollectionModel.Pin()->UnloadLevels(unloadLevelArray);

 


참고

 

https://docs.unrealengine.com/4.27/en-US/API/Editor/WorldBrowser/FWorldBrowserModule/

 

FWorldBrowserModule

The module holding all of the UI related pieces for SubLevels management

docs.unrealengine.com

 

'UE4' 카테고리의 다른 글

[UE4][Editor]맵 이벤트  (0) 2023.01.17
[UE4] OpenLevel  (0) 2022.08.22
[UE4][Editor] Asset 저장  (0) 2022.07.25
[UE4] Animation 덧붙이기  (0) 2022.05.29
UE4 코드에서 DataTable 사용  (0) 2022.04.18