기본적으로 UE4의 레벨 시스템은 퍼시스턴트 레벨에서 Volume처리를 해서 해당 영역에 들어오면 SubLevel을 나눠서 Streaming처리를 하여 메모리에 Load/Unload 하는 방식으로 되어 있는데...
SubLevel이 너무 많으면 퍼시스턴트 레벨에 모두 포함 시켜서 관리를 하면 관리에 용이하지 않고 힘들지 않을까 해서 RunTime시에 Streaming Level을 이용하여 퍼시스턴트레벨에 붙이는 방법이 없을까라는 미션이 발생하였는데 결과부터 말하면 가능하다.
관건은 ULevelStreaming을 받아서 패키지 명을 셋팅해주는건데 ULevelStreaming옵션이 UCLASS(abstract, editinlinenew,MinimalAPI,BlueprintType, Within=World) 로 되어 있어서 그냥 사용하면 Debug모드에서 깔끔하게 터트려준다.
새롭게 본인의 입맛에 맞는 Custom Class로 만들던가 아니면 Kismet을 사용하면 된다.
문제는 LevelTransform인데.... 이게 해당 Location으로 이동이 가능한데 이게 내부적으로는 해당 Level에 배치되어 있는 Actor들을 죄다 접근해서 일일이 Offset 적용을 해주기 때문에 부하가 있어 보인다.
방법은 게임 첫 진입시에 필요한 부분을 죄다 로딩하 하는 식으로 하거나 다른 방법을 사용하면 되지 않을까 싶다.
핵심은 저렇게 사용하여 Runtime시에 SubLevel을 조합하여 원하는 Level을 조립할 수 있는것이다.
'프로그래밍 > Unreal' 카테고리의 다른 글
BlueprintImplementableEvent (0) | 2018.08.02 |
---|