Asset Manager은 프라이머리 에셋에 대하여 로딩과 언로딩을 한다. (프라이머리에셋에 대해서는 나중에)
핵심 함수
SynchronousLoadAsset(const FSoftObjectPath& ..)
동기식으로 로딩한다.
동기: 로딩을 다 하기 전까지 다른 것을 하지 않지만 빠르다. 로딩화면 때 사용됨
비동기: 로딩을 하면서 다른 작업과 같이 진행하기 때문에 게임플레이 중 로딩이 필요할 때 사용됨
이 함수는 동기식 로딩 때 문제가 생기는 지 찾기 위해 따로 만든 함수이다.
결국 GetStreamableManager().LoadSynchronous() 함수를 래핑했는데,
로딩에 걸리는 시간을 LogTimePtr에 저장하는 것만 추가했을 뿐이다.
SynchronousLoadAsset(const FSoftObjectPath& ..)
매개변수의 SoftObjectPath는 로딩할 파일의 경로다.
모든 파일을 메모리에 들고 있기엔 너무 무겁기 때문에 경로만으로 로딩할 수 있다.
Asset: 블루프린트, 사운드..
StaticClass: 메타데이터(리플렉션)
ㄴ런타임단계에서 클래스의 정보를 얻을 수 있음 (C#특성)
TSubClassOf: 특정클래스의 서브클래스의 타입 정보
ㄴ특정 클래스를 상속받은 클래스만 넣을 수 있도록 래핑한 클래스
CDO: 클래스의 기본 인스턴스
AssetManager은 엔진이 켜지기 전부터 코드가 실행된다.
이 타이밍은 멀티스레드가 안전하지 않기 때문에 LoadedAssets에 저장할 때 한 개씩만 저장하도록 Lock을 건다.
저장할 오브젝트에 락을 걸어 열쇠를 가지고 있는 사람만 방에 들어갈 수 있듯이 한번에 한개의 오브젝트만 저장한다.
LoadedAssets에 저장하는 이유는 에셋들이 언리얼 엔진 내부에서 가비지 컬렉션으로 지워지는 것을 방지하기 위함이다.
'Unreal' 카테고리의 다른 글
| [Unreal] Lyra 프로젝트 분석 - 03. Modular Gameplay Actor (0) | 2025.02.06 |
|---|---|
| [Unreal] Lyra 프로젝트 분석 - 02. Experience (0) | 2025.02.06 |
| [Unreal] Unfallen 플레이 영상 (0) | 2022.06.17 |
| [Unreal] BTTaskNode에서 ExecuteTask, TickTask 사용법 (0) | 2022.04.05 |
| [Unreal] 카메라 회전 관련 변수 (0) | 2022.03.27 |