Processing math: 100%
본문 바로가기
개발일지/Unreal&C++

[Unreal] 서브 레벨 구성 및 스트리밍 레벨 로드

by 쫌눈 2025. 3. 18.
728x90
반응형

Unity의 Scene Addictive와 비슷하다고 생각하면 된다.

서브레벨 구성

SubLevel1을 Level로 만들고, SubLevel1을 연다.

Level을 Unlit으로 설정한 후 Window->Place Actors를 누른다.

레벨에 Shapes들을 배치한다.

폴더로 subLevel 정의를 한다.

 

같은 레벨을 2개 복사한 후 MainLevel을 만든다.

SubLevel2와3의 폴더 명을 변경한다.

MainLevel에 합쳤을 때, 폴더 명이 같으면 서브레벨을 나눈 의미가 없이, 같은 폴더 내에 배치된다.

Main Level 배치

MainLevel을 열고 place actors에 light검색 후 directional light를 추가한다.unlit>lit.

우측 상단의 Levels의 add existing 을 클릭하여 SubLevel들을 추가한다.

Levels의 Persistent Level을 더블클릭하여 Persistent Level을 수정함을 명시적으로 설정한다.

좌 -> 설정 전, 우 -> 설정 후

Sub Level들 위치를 변경한다.

좌측 상단의 Perspective를 Top, Left등으로 변경하면서 배치할 수 있다.

Place actors에 sky를 검색한 후 Sky Atomosphere, Sky light, fog를 검색 한 후 ExponentialHeightFog를 추가한다.

이때 sub레벨에 포함되지 않도록 우측 상단의 Levels를 확인한다.

Light들은 Lighting폴더로 묶는다.

Player Start를 누른 후 플레이 한다.

플레이어 캐릭터가 공중에 체공해 있고, 레벨에 올려놨던 subLevel들이 없어진 것을 볼 수 있다.

언리얼은 메모리 사용량을 줄이고 끊김 없는 월드를 생성하기 위해 플레이 중에 레벨을 비동기식으로 로드 및 언로드를 한다. 그러므로 레벨을 로드해야 한다.

이걸 해결하려면 몇가지 방법이 있다.

Level 미리 로드

레벨들을 선택 후 우클릭하여 Change Streaming Method -> Always Loaded를 하면, 미리 레벨을 불러와 문제가 없어진다.

Always Loaded 세팅을 한 후 플레이를 한 모습레

트리거 박스를 이용한 레벨 스트리밍

SubLevel1을 제외하고 모두 블루프린트 모드로 변경한다. Player Start 액터가 SubLevel1위에 위치하는지 꼭 확인해야 한다.

Sub Level2를 로드하려는 위치에 트리거 박스 배치

트리거 박스에 이벤트 추가OnActorBeginOverlap

 

레벨 블루프린트에서 스트리밍 레벨 로드

Shold block on load => 레벨을 불러오는 작업은 파일을 읽어와 세팅하는 작업인데, 이때 레벨의 크기가 크다면 시간이 오래 걸릴 수 있다. Block모드는 파일이 로드 되기 전까지 다른 작업들이 동작하지 못하도록 막는 옵션이다.
현재 예시에는 레벨 크기가 작으므로 block을 하나마나 비슷한 속도가 나온다.

컴파일@@@@@ 저장@@@@@

이제 블루프린트에서 Tag검사를 했기 때문에, 플레이어에 Player 태그를 심어야 한다.

실행 후 캐릭터를 찾아 Edit BP__~~~를 클릭하고, Details에 Tag를 추가한다.

+버튼을 눌러 Player를 누른 후 컴파일+저장한다.

그런 후 실행하면 아래와 같이 trigger box에 overlap될 시 스트리밍 된다.

언로딩도 비슷한 개념으로 하면 된다.

OnActorEndOverlap 이벤트를 사용하여 UnLoadStreaming Level을 사용하면 된다.

트리거 볼륨을 이용한 레벨 스트리밍

트리거 박스의 이벤트가 불릴 수 있기 때문에 트리거 박스를 충돌되지 않는 선으로 이동시킨 후 트리거 볼륨을 추가한다.

트리거 볼륨을 트리거 박스보다 더 큰 범위로 배치한다.

그리고 트리거 박스와 같이 이벤트를 추가한다.

트리거 박스의 이벤트를 복사 붙여넣기 하여 노드를 연결 한다.

트리거 박스와 트리거 볼륨의 제일 큰 차이는 충돌체에 있다.

트리거 볼륨 : 카메라 위치 기준 트리거

트리거 박스 : 캐릭터 메시 기준 트리거

 

다음에는 캐릭터를 만들고 이동하는 방법에 대해 포스팅 하겠다.

728x90
반응형