작성
·
134
·
수정됨
0
Lyra에서 에셋을 로드할때 한가지 예시로 GetAsset( ) 함수에서는 TSoftObjectPtr 타입의 포인터를 전달해주고 있는데요,
인자로 받은 소프트 오브젝트를 SynchronousLoadAsset( ) 함수로 실질적으로 메모리에 로드하는걸로 알고있습니다.
그러면 AssetManager의 Primary Asset Types To Scan으로 에셋들이 관리되는 이유가 따로 있을까요?
AssetManager의 Primary Asset Types To Scan로 관리되는 에셋들과
내부함수를 사용하여 로드한 에셋들의 관계에 대해 궁금합니다.
답변 1
0
Primary Asset들은 Load를 하기전에 Scan이라는 과정이 필요한걸로 알고 있습니다.
Scan을 해야 AssetRegistry에 등록되어 애셋의 존재를 알게 되고, 그 이후에 Load를 하게 되면 메모리에 올라오는 것 같습니다.
아하 감사합니다.
일반적으로는 primary인 레벨에 다 묶여있어서 가능했던 거군요
반면에 별개의 primary로 인식해야 하는 에셋들은 따로 지정해줘야 하나보네요
도큐먼트상에서는 PrimaryAsset과 SecondaryAsset의 차이는 PrimaryAssetId의 유무인거같아요.
Primary Asset Types To Scan에 어떤 Type으로 부를지 지정해주는것같고
해당 Type에 해당하는 Primary Asset들을 한번에 Load하고 Unload하는 것이 가능해지는게 차이인것같습니다.
저도 대충만 알고 있었는데 덕분에 많이 찾아보네요
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/asset-management-in-unreal-engine
그리고 ChatGPT가 Primary Data Asset은 Direct Reference로 자동으로 Load안된다네요. AssetManager의 특별한 함수인 LoadPrimaryAaset을 써줘야겠네요.
반면에 Secondary Asset들은 TObjectPtr이나 단순포인터로 래퍼런스가 생기면 자동으로 Load될겁니다. 물론 TSoftObjectPtr로 래퍼런스로 한거면 사용하기전에 Load해줘야겠지만요.
Primary Asset Types To Scan 를 어떻게 쓰고 있나 UAssetManager 쪽 코드를 보면 로딩시점에 애셋들 Scan하는데에 쓰고 있더라고요.