블루프린트를 사용한 레벨 로딩 및 언로딩

블루프린트로 생성한 커스텀 스트리밍 액터를 사용하여 레벨을 스트리밍하는 방법을 설명합니다.

Choose your operating system:

Windows

macOS

Linux

이번 예시에서 파티오 레벨 스트리밍을 받기 시작하여 플레이어가 모퉁이를 돌아 파티오에 접근할 때쯤에는 스트리밍 레벨이 완전히 로드되어 화면에 나타나도록 만들겠습니다.

StreamingLevelVisible.png

초기 설정으로 SunTemple_PersistentSunTemple_Streaming 두 레벨이 준비되어 있습니다. 플레이어 스타트(Player Start)SunTemple_Persistent 에 있으며, 게임 속 플레이어는 캐릭터(Character) 로 표현됩니다.

  1. 콘텐츠 브라우저(Content Browser) 에서 SunTemple_Persistent 를 엽니다.

  2. 플레이어 스타트 를 사원의 시작 지점으로 이동합니다.

    PlayerStart.png

  3. 창(Windows) 을 클릭한 다음 레벨(Levels) 을 선택합니다.

  1. 레벨 드롭다운 메뉴를 클릭한 다음, 기존 추가(Add Existing...) 를 선택하여 새로운 서브레벨을 추가합니다.

    AddExisting.png

  2. 레벨 열기(Open Level) 대화창에서 추가할 SunTemple_Streaming 을 선택한 다음, 열기(Open) 를 클릭합니다.

    SunTempleStreaming_Select.png

  3. 퍼시스턴트 레벨(Persistent Level)우클릭 한 다음, 드롭다운 메뉴에서 현재로 만들기(Make Current) 를 선택합니다.

블루프린트로 레벨 스트리밍 받기

  1. 콘텐츠 브라우저 를 열고 새 블루프린트 클래스(Blueprint Class) 를 생성합니다. 이 클래스는 액터(Actor) 를 기반으로 할 것입니다.

  2. 블루프린트 클래스 를 ‘LevelStreamer'로 명명하고 저장합니다.

  3. 블루프린트 에디터(Blueprint Editor) 에서 LevelStreamer 를 엽니다.

이 시나리오에서는 캐릭터(Character) 가 박스 컴포넌트와 오버랩되면 두 번째 레벨을 스트리밍으로 받겠습니다.

  1. 컴포넌트(Components) 탭에 있는 컴포넌트 추가(Add Component) 버튼을 사용하여 박스 콜리전(Box Collision) 컴포넌트를 추가합니다.

  2. 블루프린트의 이벤트 그래프(Event Graph) 를 엽니다. 컴포넌트 탭에서 박스(Box) 컴포넌트를 선택한 다음, 그래프를 우클릭 하여 컨텍스트 메뉴를 엽니다.

  3. 'begin overlap'을 입력한 다음, 컴포넌트 오버랩 시작 시(On Component Begin Overlap) 를 선택하여 이벤트를 추가합니다.

  4. 기타 액터(Other Actor) 핀을 클릭하고 드래그한 다음, 컨텍스트 메뉴의 검색창에 '='을 입력합니다. Equal (Object) 항목을 선택하여 노드를 추가합니다.

  5. == 노드에서 두 번째 오브젝트 핀을 클릭하고 드래그한 다음, 컨텍스트 메뉴의 검색창에 'character'를 입력합니다. Get Player Character 항목을 선택하여 노드를 추가합니다.

  6. B 키를 누른 상태로 그래프를 클릭하여 Branch 노드를 추가한 다음, == 노드의 부울 핀을 Branch 노드의 입력 핀에 연결합니다.

  7. OnComponentBeginOverlap 노드의 실행 출력 핀을 Branch 노드의 실행 입력 핀에 연결합니다.

  8. 그래프를 우클릭 한 다음, 컨텍스트 메뉴의 검색창에 'level'을 입력합니다. 메뉴에서 Load Stream Level 을 선택합니다.

  9. 레벨 이름(Level Name) 핀을 우클릭 하고 변수로 승격한 다음, 변수 이름을 'LevelToStream'으로 지정하고 디테일 패널에서 편집가능(Editable) 을 체크합니다.

    LevelToStreamVar.png

  10. Load Stream Level 노드에서 로드 후 보이게 만들기(Make Visible After Load)로드 시 블록 필요(Should Block on Load) 를 토글합니다.

    이 예시에서는 이 블루프린트를 사용하여 모든 레벨의 기본 로딩 동작을 같게 만들겠지만 편집가능 변수로 만드는 방법도 있습니다.

  11. Branch 노드의 True 실행 출력 핀을 Load Stream Level 노드의 입력 실행 핀에 연결합니다.

    FinalLoadBP.png

  12. LevelStreamer 블루프린트를 레벨에 배치하고 그 위치와 스케일을 조절해서 퍼시스턴트 월드에서 캐릭터 가 들어설 때 스트리밍하기 시작할 영역을 감싸고 스트리밍 레벨이 배치되어 캐릭터가 걸어 다닐 전체 볼륨도 감싸도록 만듭니다.

  13. SunTemple_Streaming스트리밍할 레벨(Level to Stream) 로 입력합니다.

  14. 에디터에서 플레이(Play in Editor) 를 사용하여 스트리밍 레벨을 테스트해봅니다.

블루프린트로 레벨 언로딩하기

캐릭터박스 컴포넌트를 나갈 때 레벨을 언로드하려면 그래프의 로직은 거의 똑같지만 Unload Stream Level 노드에서 끝나야 합니다.

UnloadLevel.png