본문 바로가기
Unreal 게임 개발/Unreal 강의 개인 정리

Unreal Package & Asset

by daisy0461 2024. 1. 12.

Unreal Object Package

Serialization을 통해 단일 Unreal Object를 Read, Write할 수 있었다.

Package라는 단위로 Unreal Object들이 다양하게 조합되어 있을 때 Read, Write할 수 있다.

Package는 Unreal Object를 감싼 포장 오브젝트를 의미한다.

 

Package와 Asset

  • Unreal Obejct Package는 다수 Unreal Object를 포장하는데 사용하는 Unreal Object이다.
    모든 Unreal Object는 Package(Transient Package)에 소속되어 있다.
  • Unreal Object Package의 서브 오브젝트를 Asset이라고 하며 에디터에 노출되는 것이 Asset이다.
  • 구조상 Package는 다수의 Unreal Object를 소유할 수 있으나 일반적으로는 하나의 Asset만 가진다.
  • Asset은 다수의 서브 오브젝트를 가질 수 있으며 모두 Unreal Object Package에 포함된다.
    하지만 서브오브젝트는 에디터에 노출되지 않는다.

 

Asset 참조와 로딩

Asset Load 전략

게임 제작 단계에서 에셋 간의 연결 작업을 위해 직접 Package를 불러 할당하는 작업은 부하가 크다.

  • 에셋 로딩 대신에 패키지와 오브젝트를 지정한 문자열을 대체해 사용 -> Object 경로
  • 프로젝트 내에 Object 경로 값은 유일함을 보장 -> 섞이지 않기 위해
  • Object 간의 연결은 Object경로 값으로 기록 가능
  • Object경로를 사용해 다양한 방법으로 Asset Load가능

Asset Load 방법 3가지

  • 프로젝트에서 Asset이 반드시 필요한 경우 : 생성자 코드에서 미리 로딩
  • 런타임에서 필요할 때 바로 로딩하는 경우 : 런타임 로직에서 정적로딩 (다른 프로세스의 로딩을 막음 - 게임이 멈춤)
  • 런타임엣 비동기적으로 로딩하는 경우 : 런타임 로직에서 관리자를 사용해 비동기 로딩

Object 경로 (Object Path)

  • Package이름과 Asset 이름을 한데 묶은 문자열
  • Asset Class 정보는 생략할 수 있음.
  • Package 내 Data를 모두 로드하지 않고 Object Path를 통해 필요한 Asset만 로드 가능
  • ex) {Asset Class 정보}'{PackageName}.{Asset Name}' or {PackageName}.{Asset Name}

에셋 스트리밍 관리자(Streamable Manager)

  • Asset의 비동기로딩을 지원하는 관리자 객체
  • 콘텐츠 제작과 무관한 싱글턴 클래스에 FStreamableManger를 선언하면 좋다.
  • FStreaableManager를 활용해 Asset의 동기/비동기 로딩을 관리할 수 있다.
  • 다수의 Object Path를 입력해 다수의 Asset

동일하게 Unreal Serialization 프로젝트에 실제 사용하는 예제가 들어있음.

 

 

'Unreal 게임 개발 > Unreal 강의 개인 정리' 카테고리의 다른 글

Unreal GAS (Gameplay Ablility System)  (1) 2024.04.26
Unreal Build System  (1) 2024.04.14
Unreal 직렬화  (0) 2024.01.08
Unreal 메모리 관리 (GC)  (0) 2024.01.03
Unreal Struct & Map  (0) 2024.01.03