위치별 에셋 로드
어드레서블 에셋을 주소, 레이블 또는 AssetReference로 로드하면 어드레서블 시스템은 먼저 에셋의 리소스 위치를 조회하고 IResourceLocation
인스턴스를 사용하여 필요한 에셋 번들 및 모든 종속성을 다운로드합니다. 에셋 로드 작업을 수행하려면 LoadResourceLocationsAsync
로 IResourceLocation
오브젝트를 가져온 다음, 해당 오브젝트를 키로 사용하여 에셋을 로드하거나 인스턴스화합니다.
IResourceLocation
오브젝트에는 하나 이상의 에셋을 로드하는 데 필요한 정보가 포함되어 있습니다.
LoadResourceLocationsAsync
메서드는 실패하지 않습니다. 지정된 키를 에셋의 위치로 확인하지 못하는 경우 빈 목록을 반환합니다. type
파라미터에 특정 유형을 지정하여 메서드를 통해 반환되는 에셋 위치의 유형을 제한할 수 있습니다.
다음 예제에서는 knight
또는 villager
로 레이블이 지정된 모든 에셋의 위치를 로드합니다.
AsyncOperationHandle<IList<IResourceLocation>> handle
= Addressables.LoadResourceLocationsAsync(
new string[] {"knight", "villager"},
Addressables.MergeMode.Union);
yield return handle;
//...
Addressables.Release(handle);
하위 오브젝트의 위치 로드
Unity는 콘텐츠 카탈로그의 크기를 줄이고 런타임 성능을 개선하기 위해 런타임에 SubObjects
의 위치를 생성합니다. 하위 오브젝트가 있는 에셋의 키로 LoadResourceLocationsAsync
를 호출하고 유형을 지정하지 않으면, 메서드는 모든 하위 오브젝트와 메인 오브젝트에 대해 IResourceLocation
인스턴스를 생성합니다. 마찬가지로 하위 오브젝트가 있는 에셋에 연결되는 AssetReference에 사용할 하위 오브젝트를 지정하지 않으면, 시스템은 모든 하위 오브젝트에 대해 IResourceLocation
인스턴스를 생성합니다.
예를 들어 myFBXObject
주소로 FBX 에셋의 위치를 로드하면 게임 오브젝트, 메시, 머티리얼 등 세 가지 에셋에 대한 위치를 가져올 수 있습니다. 대신 주소에 유형을 myFBXObject[Mesh]
로 지정하면 메시 오브젝트만 가져옵니다. LoadResourceLocationsAsync
메서드의 type
파라미터를 사용하여 유형을 지정할 수도 있습니다.