futurelabunseen / B-JeonganLee

UNSEEN 2nd Term Learning and Project Repo.
5 stars 0 forks source link

14강: 언리얼 오브젝트 관리 II - 패키지 #57

Closed fkdl0048 closed 3 months ago

fkdl0048 commented 3 months ago

14강: 언리얼 오브젝트 관리 II - 패키지

언리얼 오브젝트 패키지

언리얼 오브젝트 패키지

단일 언리얼 오브젝트가 가진 정보는 쉽게 저장할 수 있지만, 다양한 오브젝트가 도합되어 있다면 이를 관리하는 것은 어려울 수 있다. 복잡한 계층 구조를 가진 언리얼 오브젝트를 효과적으로 저장하고 불러들이는 방법이 통일되어야 하는데, 언리얼 엔진은 이를 위해 패키지(UPackage)단위로 언리얼 오브젝트를 관리할 수 있게 했다.

패키지는 중의적인 개념인데, 언리얼에서는 언리얼 오브젝트를 감싼 포장 오브젝트를 의미한다. 따라서 언리얼 오브젝트 패키지라고 부르는 것이 더 정확하다.

패캐지와 에셋

언리얼 오브젝트 패키지는 다수의 언리얼 오브젝트를 포장하는데 사용하는 언리얼 오브젝트로 모든 언리얼 오브젝트는 패키지에 속해있다. (Transient Package)

언리얼 오브젝트 패키지의 서브 오브젝트를 에셋이라고 하며 에디터에는 이들이 노출된다. 구조상 패키지는 다수의 언리얼 오브젝트를 소유할 수 있으나, 일반적으로는 하나의 에셋만을 가진다.

에셋은 다시 다수의 서브오브젝트를 가질 수 있으며, 모두 언리얼 오브젝트 패키지에 포함된다. (하지만 에디터에는 노출되지 않음)

에셋 첨조와 로딩

에셋 정보의 저장과 로딩 전략

게임 제작 단계에서 에셋 간의 연결 작업을 위해 직접 패키지를 불러 할당하는 작업은 부하가 큰 작업이다. 따라서 언리얼 엔진에선 이를 에셋 로딩 대신 패캐지와 오브젝트를 지정한 문자열을 대체해 사용한다. (오브젝트 경로라고도 함) 프로젝트 내에 오브젝트 경로 값은 유일함을 보장한다. 그렇기에 오브젝트 간의 연결은 오브젝트 경로 값으로 기록될 수 있다. 오브젝트 경로를 사용해 다양한 방법으로 에셋을 로딩할 수 있다.

오브젝트 경로

오브젝트 경로값은 패키지 이름과 에셋 이름을 한 데 묶은 문자열이다. 에셋 클래스 정보는 생략할 수 있다. 패키지 내 데이터를 모두 로드하지 않고 오브젝트 경로를 사용해 필요한 에셋만 로드할 수 있다.

{에셋클래스정보}'{패키지이름}.{에셋이름}' or {패키지이름}.{에셋이름}

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

에셋의 비동기 로딩을 지원하는 관리자 객체로 콘텐츠 제작과 무관한 싱글턴 클래스에 FStreamableManager선언해두면 좋음 (GameInstance)..

FStreamableManager를 활용해 에셋의 동기/비동기 로딩을 관리할 수 있으며, 다수의 오브젝트 경로를 입력해 다수의 에셋을 로딩하는 것도 가능하다.

정리