루리코딩 세상

Unreal Editor : Level 본문

이론/Unreal Engine

Unreal Editor : Level

루리딩 2025. 5. 15. 18:28

이번 포스팅은 언리얼 엔진에서 씬을 담당하는 Level을 사용하면서 들었던

호기심에 대해서 GTP를 기반으로 질문하여 학습하는 내용입니다.

 

이미지는 에디터 상에서 새 레벨을 생성하는 과정은 에디터 스크린샷으로

새 레벨 생성에 대한 에디터 사용법에 관한 내용입니다.

새롭게 생성된 Level.

생성된 레벨은 - 파일 - 다른이름으로 현재 레벨 저장하면 된다.


 

언리얼 엔진(Unreal Engine)에서 "Level"게임 개발의 기본 단위로, **하나의 게임 또는 씬(scene)**의미합니다. 이를 이해하려면 레벨이 어떤 역할을 하고 어떻게 구성되는지를 알아야 합니다:


언리얼 엔진의 Level이란?

Level3D 공간, 콘텐츠, 게임 로직이 결합된 씬입니다.
하나의 Level에는 다음과 같은 요소들이 포함됩니다:

  • 지형(terrain) 또는 배경
  • 라이팅(light)
  • 카메라와 플레이어 시작 지점
  • 오브젝트와 액터(Actor)
  • 이벤트와 스크립트 (Blueprint 포함)

🧩 레벨은 어떻게 쓰이나요?

  • 게임의 스테이지 단위:
    예: 1스테이지, 2스테이지처럼 게임의 구간을 구분할 사용합니다.
  • 전환용:
    로딩 화면이나 컷씬, 타이틀 화면, 게임 오버 화면도 각각 독립된 Level구성할 있습니다.
  • 테스트 용도:
    캐릭터나 특정 시스템을 실험하기 위한 테스트 레벨을 따로 만들 있습니다.

🧠 관련 개념: Persistent LevelSub-Level

  • Persistent Level (영속 레벨)
    메인 레벨로, 다른 서브 레벨들을 포함하거나 관리하는 중심 레벨입니다.
  • Sub-Level (서브 레벨)
    메모리와 성능 최적화를 위해 분리된 레벨로, 스트리밍(불러오기/제거)통해 동적으로 로드됩니다.
    예: 마을/건물/지형을 각각 별개의 서브 레벨로 두고, 플레이어 위치에 따라 자동 로딩.

🎮 Level Streaming이란?

필요한 부분만 메모리에 불러오는 방식으로, 맵에서도 성능 저하 없이 플레이가 가능하게 합니다.
예: 오픈 월드 게임에서 플레이어가 이동할 주변 지역만 불러오는 식.


💡 요약

용어설명
Level 하나의 게임 또는
Persistent Level 중심이 되는 메인 레벨
Sub-Level 로딩/언로딩 가능한 하위 레벨
Level Streaming 성능 최적화를 위한 부분적 로딩 기능
 

 


🎮 [1] 언리얼 엔진에서 레벨 전환하는 방법

레벨 전환은 주로 플레이어가 문을 열거나 버튼을 누를 사용되며, Blueprint구현할 있습니다.

🔹 방법 1: Open Level 노드 사용

Level 이름을 직접 입력하여 전환:

  1. 블루프린트(예: 트리거 박스나 버튼)Open Level 노드를 생성
  2. Level Name전환할 레벨 이름 입력 (확장자 없이!)
    예: "Level_02"
  3. 이벤트(충돌, 입력 등)연결
 
[OnComponentBeginOverlap] → [Open Level ("Level_02")]

💡 주의: 전환 대상 레벨은 프로젝트에 반드시 등록되어 있어야 하며, 이름 오탈자도 없어야 함!


🔹 방법 2: Level Streaming 방식으로 부드럽게 전환

Load Stream Level 또는 Unload Stream Level 노드를 사용하여 특정 Sub-Level불러오거나 제거할 있습니다.
방식은 전환 없이도 자연스러운 확장이 가능함.


🧠 [2] Level Blueprint vs Actor Blueprint 차이

항목Level BlueprintActor Blueprint
범위 레벨 전체 개별 오브젝트
사용 목적 전반의 로직 제어 (열림, 전환 등) 캐릭터, 문, 버튼 개별 기능 구현
위치 레벨에 하나 존재 안에 여러 배치 가능
예시 플레이어가 특정 지역에 들어오면 컷씬 재생 특정 버튼을 누르면 애니메이션 재생
 

📌 예를 들어

  • Level Blueprint: "플레이어가 지역에 들어오면 다음 씬으로 이동"
  • Actor Blueprint: "문을 클릭하면 열리는 애니메이션 재생"

💡 실전

  • 복잡한 로직은 가능하면 Actor Blueprint분리해서 재사용성을 높이고,
    Level Blueprint필요한 전용 로직만 간단히 구성하는 것이 좋습니다.

🎮 트리거 박스로 레벨 전환하기 (Open Level 사용 예제)

📌 목표:

플레이어가 특정 영역에 들어오면 자동으로 다른 레벨로 전환


🧱 구성 요소:

  1. Trigger Box (Collision → Box Trigger)
  2. Level Blueprint (또는 Actor Blueprint연결 가능)
  3. Open Level 노드

🖼️ 블루프린트 흐름:

[BeginOverlap (Trigger Box)] ↓ [Cast To MyCharacter (플레이어 확인)] ↓ [Open Level ("Level_02")]

 


🔧 구현 방법 (Step-by-Step):

  1. Trigger Box 배치
    • 레벨에 Box Trigger배치 (위치: 앞, 특정 구역 등)
  2. Level Blueprint 열기
    • 메뉴: Blueprints > Open Level Blueprint
  3. 노드 구성
    • 트리거 박스를 선택한 상태에서 Level Blueprint오른쪽 클릭 → Add Event for Trigger Box > Add OnActorBeginOverlap
    • 플레이어인지 확인하려면 → Cast To (플레이어 캐릭터) 사용
    • 다음 → Open Level 노드 사용, 레벨 이름은 정확히 "Level_02" (파일명과 일치해야 함)

🧠 블루프린트 전체 요약 예시 (텍스트 버전):

Event ActorBeginOverlap (TriggerBox) ↓ Cast To MyCharacter ↓ Open Level ("Level_02")

⚠️ 주의 사항

    • "Level_02"Content Browser에서 존재하는 이름이어야 하며, .umap 확장자는 생략합니다.
    • Cast To생략 가능하지만, 충돌한 대상이 플레이어인지 확실히 하려면 사용하는 좋습니다

요약

구성 요소설명
Viewport 3D 게임 월드 시각화 편집 공간
World Outliner 레벨 모든 액터 목록과 계층 구조
Details 선택된 액터의 속성 컴포넌트 세부 조정
Content Browser 프로젝트 에셋 탐색 불러오기
Level 게임 단위, Persistent LevelSub Level 포함
Actor 월드 모든 오브젝트 기본 단위