일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- 자료형타입
- c언어정리
- ipc(inter process communication)
- 언리얼엔진공부
- bttask
- leveleditor
- 각도변환
- 프로그래밍
- 언리얼엔진5
- c++porinter
- unrealengineai
- uaiperception
- 언리얼비헤이어비어트리
- 자료구조
- 월드아웃라이너
- 언리얼엔진
- livrary
- 영단어정리
- c++용어정리
- 언리얼ai
- 프로그래밍일기
- directx
- c++class
- 게임개발
- c++
- 수학용어정리
- 25.06.11dir
- 게임엔진튜토리얼
- DX
- 자료구조정리
- Today
- Total
루리코딩 세상
Unreal Editor : Level 본문
이번 포스팅은 언리얼 엔진에서 씬을 담당하는 Level을 사용하면서 들었던
호기심에 대해서 GTP를 기반으로 질문하여 학습하는 내용입니다.
이미지는 에디터 상에서 새 레벨을 생성하는 과정은 에디터 스크린샷으로
새 레벨 생성에 대한 에디터 사용법에 관한 내용입니다.
새롭게 생성된 Level.
생성된 레벨은 - 파일 - 다른이름으로 현재 레벨 저장하면 된다.
언리얼 엔진(Unreal Engine)에서 "Level"은 게임 개발의 기본 단위로, **하나의 게임 맵 또는 씬(scene)**을 의미합니다. 이를 이해하려면 레벨이 어떤 역할을 하고 어떻게 구성되는지를 알아야 합니다:
✅ 언리얼 엔진의 Level이란?
Level은 3D 공간, 콘텐츠, 게임 로직이 결합된 씬입니다.
하나의 Level에는 다음과 같은 요소들이 포함됩니다:
- 지형(terrain) 또는 배경
- 라이팅(light)
- 카메라와 플레이어 시작 지점
- 오브젝트와 액터(Actor)
- 이벤트와 스크립트 (Blueprint 포함)
🧩 레벨은 어떻게 쓰이나요?
- 게임의 스테이지 단위:
예: 1스테이지, 2스테이지처럼 게임의 구간을 구분할 때 사용합니다. - 씬 전환용:
로딩 화면이나 컷씬, 타이틀 화면, 게임 오버 화면도 각각 독립된 Level로 구성할 수 있습니다. - 테스트 용도:
캐릭터나 특정 시스템을 실험하기 위한 테스트 레벨을 따로 만들 수 있습니다.
🧠 관련 개념: Persistent Level과 Sub-Level
- Persistent Level (영속 레벨)
메인 레벨로, 다른 서브 레벨들을 포함하거나 관리하는 중심 레벨입니다. - Sub-Level (서브 레벨)
메모리와 성능 최적화를 위해 분리된 레벨로, 스트리밍(불러오기/제거)을 통해 동적으로 로드됩니다.
예: 마을/건물/지형을 각각 별개의 서브 레벨로 두고, 플레이어 위치에 따라 자동 로딩.
🎮 Level Streaming이란?
필요한 부분만 메모리에 불러오는 방식으로, 큰 맵에서도 성능 저하 없이 플레이가 가능하게 합니다.
→ 예: 오픈 월드 게임에서 플레이어가 이동할 때 주변 지역만 불러오는 식.
💡 요약
Level | 하나의 게임 맵 또는 씬 |
Persistent Level | 중심이 되는 메인 레벨 |
Sub-Level | 로딩/언로딩 가능한 하위 레벨 |
Level Streaming | 성능 최적화를 위한 부분적 로딩 기능 |
🎮 [1] 언리얼 엔진에서 레벨 전환하는 방법
레벨 전환은 주로 플레이어가 문을 열거나 버튼을 누를 때 사용되며, Blueprint로 구현할 수 있습니다.
🔹 방법 1: Open Level 노드 사용
Level 이름을 직접 입력하여 전환:
- 블루프린트(예: 트리거 박스나 버튼)에 Open Level 노드를 생성
- Level Name에 전환할 레벨 이름 입력 (확장자 없이!)
예: "Level_02" - 이벤트(충돌, 키 입력 등)를 연결
[OnComponentBeginOverlap] → [Open Level ("Level_02")]
💡 주의: 전환 대상 레벨은 프로젝트에 반드시 등록되어 있어야 하며, 이름 오탈자도 없어야 함!
🔹 방법 2: Level Streaming 방식으로 부드럽게 전환
Load Stream Level 또는 Unload Stream Level 노드를 사용하여 특정 Sub-Level을 불러오거나 제거할 수 있습니다.
이 방식은 씬 전환 없이도 자연스러운 맵 확장이 가능함.
🧠 [2] Level Blueprint vs Actor Blueprint 차이
범위 | 레벨 전체 | 개별 오브젝트 |
사용 목적 | 씬 전반의 로직 제어 (문 열림, 전환 등) | 캐릭터, 문, 버튼 등 개별 기능 구현 |
위치 | 각 레벨에 딱 하나 존재 | 씬 안에 여러 개 배치 가능 |
예시 | 플레이어가 특정 지역에 들어오면 컷씬 재생 | 특정 버튼을 누르면 애니메이션 재생 |
📌 예를 들어
- Level Blueprint: "플레이어가 이 지역에 들어오면 다음 씬으로 이동"
- Actor Blueprint: "이 문을 클릭하면 열리는 애니메이션 재생"
💡 실전 팁
- 복잡한 로직은 가능하면 Actor Blueprint로 분리해서 재사용성을 높이고,
Level Blueprint는 꼭 필요한 씬 전용 로직만 간단히 구성하는 것이 좋습니다.
🎮 트리거 박스로 레벨 전환하기 (Open Level 사용 예제)
📌 목표:
플레이어가 특정 영역에 들어오면 자동으로 다른 레벨로 전환
🧱 구성 요소:
- Trigger Box (Collision → Box Trigger)
- Level Blueprint (또는 Actor Blueprint에 연결 가능)
- Open Level 노드
🖼️ 블루프린트 흐름:
[BeginOverlap (Trigger Box)] ↓ [Cast To MyCharacter (플레이어 확인)] ↓ [Open Level ("Level_02")]
🔧 구현 방법 (Step-by-Step):
- Trigger Box 배치
- 레벨에 Box Trigger를 배치 (위치: 문 앞, 특정 구역 등)
- Level Blueprint 열기
- 메뉴: Blueprints > Open Level Blueprint
- 노드 구성
- 트리거 박스를 선택한 상태에서 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 Level과 Sub Level 포함 |
Actor | 월드 내 모든 오브젝트 기본 단위 |
'이론 > Unreal Engine' 카테고리의 다른 글
캐릭터 블루프린터 클래스 메시 적용하기 : Character Blue Print Class (0) | 2025.05.16 |
---|---|
Outliner 아웃라이너 : Tree View (0) | 2025.05.16 |
언리얼 엔진5 : UObject Component (0) | 2025.05.12 |
스테이트 머신 (FSM : Finite State Machine) (0) | 2025.05.12 |
애니메이션 블루 프린트 (0) | 2025.05.12 |