언리얼 오브젝트 관리 - 패키지
Unreal 이론2024. 10. 1. 17:50
[이득우의 언리얼 프로그래밍 수업의 정리]
언리얼 오브젝트 패키지
- 단일 언리얼 오브젝트가 가진 정보는 저장o
- 오브젝트들이 조합되어 있다면
- 저장된 언리얼 오브젝트 데이터를 효과적으로 찾고 관리하는 방법 필요
- 복잡한 계층 구조 가진 언리얼 오브젝트 효과적으로 저장과 불러들일 방법 통일 필요
- 이를 위해 언리얼은 패키지(UPackage) 단위로 언리얼 오브젝트 관리
- 패키지의 중의적 개념
- 언리얼 엔진은 다양한 곳에서 단어 "패키지" 사용
- 이번에는 오브젝트를 감싼 포장 오브젝트 의미
- 개발된 최종 컨텐츠를 정리해 프로그램으로 만드는 작업 의미하기도 함 (게임 패키징)
- DLC와 같이 향후 확장 컨텐츠에 사용되는 별도의 데이터 묶음 의미하기도 함 (pkg 파일)
- 구분하기 힘들면 언리얼 오브젝트 패키지로 부르는것도?
패키지와 에셋
- 언리얼 오브젝트는 다수의 언리얼 오브젝트를 포장하는데 사용한 언리얼 오브젝트
- 모든 언리얼 오브젝트는 패키지에 소속되어 있음 (Transient Package)
- 언리얼 오브젝트 패키지의 서브 오브젝트들을 에셋이라고 하며 에디터에는 에셋이 노출됨
- 구조상 패키지는 다수의 언리얼 오브젝트 소유 가능, 일반적으론 하나의 에셋만 가짐
- 에셋은 다시 다수의 언리얼 오브젝트 소요할 수 있지만, 일반적으론 하나의 에셋만 가짐
- 에셋은 다시 다수의 서브 오브젝트 가질 수 있으며, 모두 언리얼 오브젝트 패키지에 포함됨
- 에디터에 노출되진 않음
에셋 정보의 저장과 로딩 전략
- 게임 제작 단계에서 에셋간 연결작업을 위해 직접 패키지를 불러 할당하는 작업은 부하 큼
- 에셋 로딩 대신 패키지와 오브젝트를 지정한 문자열을 대체해 사용 -> 이것이 오브젝트 경로
- 프로젝트 내에 오브젝트 경로값은 유일함을 보장
- 때문에 오브젝트간 연결은 오브젝트 경로 값으로 기록 가능
- 오브젝트 경로 통해 다양한 방법으로 에셋 로딩 가능
- 에셋 로딩 전략
- 프로젝트에서 에셋 반드시 필요 : 생성자 코드에서 미리 로딩
- 런타임에서 필요한 때 바로 로딩 : 런타임 로직에서 정적 로딩
- 런타임에서 비동기 로딩하는 경우 : 런타임 로직에서 언리얼이 제공하는 관리자 사용해 비동기 로딩
오브젝트 경로
- 패키지 이름과 에셋 이름을 한데 묶은 문자열
- 에셋 클래스 정보는 생략 가능
- 패키지 내 데이터를 모두 로드하지 않고 오브젝트 경로를 사용해 필요한 에셋만 로드 가능
- {에셋 클래스 정보}'{패키지 이름}.{에셋 이름}' or {패키지 이름}.{에셋 이름}
에셋 스트리밍 관리자 (Streamable Manager)
- 에셋의 비동기 로딩 지원하는 관리자 객체
- 콘텐츠 제작과 무관한 싱글턴 클래스에 FStreamableManager 선언해두면 좋음
- GameInstance는 좋은 선택지
- FStreamableManager를 활용해 에셋의 동기/비동기 로딩 관리
- 다수의 오브젝트 경로 입력해 다수의 에셋 로딩하는것도 가능
- 생성자 코드에 생성한 에셋이 존재하지 않으면 에러가 나기 때문에 에셋이 빠지지 않도록 잘 세팅해야 함
'Unreal 이론' 카테고리의 다른 글
언리얼 엔진 게임 제작 기초 (0) | 2024.10.14 |
---|---|
언리얼 빌드 시스템 (1) | 2024.10.03 |
언리얼 오브젝트 관리 - 직렬화 (0) | 2024.09.12 |
언리얼 엔진의 메모리 관리 (1) | 2024.09.05 |
언리얼 네트워킹 개요 (3) | 2024.09.02 |
댓글()