docs.unity3d.com
    Show / Hide Table of Contents

    Addressables.LoadResourceLocationsAsync

    API

    • static AsyncOperationHandle<IList<IResourceLocation>> LoadResourceLocationsAsync(object key, Type type = null)
    • static AsyncOperationHandle<IList<IResourceLocation>> LoadResourceLocationsAsync(IEnumerable keys, MergeMode mode, Type type = null)

    Returns

    AsyncOperationHandle<IList<IResourceLocation>>: A list of all IResourceLocations that match the given key and Type combination. This handle needs to be released when it is no longer needed.

    Description

    Load a list of IResourceLocations.

    Addressables.LoadResourceLocationsAsync is used to return either an empty list or a list of valid IResourceLocations that match the given key(s) and Type combination. The Result can contain the IResourceLocation for varying Types if the given Type parameter is null.

    To note, this operation cannot fail. If no matching IResourceLocations can be found then the Result is an empty list. This makes the API useful for verifying that a key exists without fear of an InvalidKeyException getting thrown.

    The MergeMode used in LoadResourceLocationsAsync(IEnumerable keys, MergeMode mode, Type type = null) helps to control what is returned in the Result of the operation. MergeMode.None and MergeMode.UseFirst act identically. Either of these options ensures the Result is only populated with the first IResourceLocation it could find that matches the given keys and Type. MergeMode.Union collects every IResourceLocation that matches any of the keys and Type provided and retuns it in the Result. MergeMode.Intersection returns only the IResourceLocations that match every key and Type provided in the Result.

    It may also be desireable to pre-load IResourceLocations for use later on. When the "Key" version of an API

    static AsyncOperationHandle<IList<IResourceLocation>> LoadResourceLocationsAsync(object key, Type type = null)
    

    is used (as opposed to passing the IResourceLocation directly), the Addressable system has to look up the IResourceLocation itself. Pre-loading and then providing the location to an Addressable API can have performance benefits.

    Code Sample

    IEnumerator Start()
    {
        //Returns any IResourceLocations that are mapped to the key "AssetKey"
        AsyncOperationHandle<IList<IResourceLocation>> handle = Addressables.LoadResourceLocationsAsync("AssetKey");
        yield return handle;
    
        //...
    
        Addressables.Release(handle);
    }
    
    IEnumerator Start()
    {
        //Returns any IResourceLocations that match the keys "level2" AND "holiday"
        AsyncOperationHandle<IList<IResourceLocation>> handle = Addressables.LoadResourceLocationsAsync(new string[]
        {
            "level2",
            "holiday"
        }, Addressables.MergeMode.Intersection);
        yield return handle;
    
        //...
    
        Addressables.Release(handle);
    }
    
    IEnumerator Start()
    {
        //Returns any IResourceLocations that match the keys "knight" OR "villager"
        AsyncOperationHandle<IList<IResourceLocation>> handle = Addressables.LoadResourceLocationsAsync(new string[]
        {
            "knight",
            "villager"
        }, Addressables.MergeMode.Union);
        yield return handle;
    
        //...
    
        Addressables.Release(handle);
    }
    
    Back to top
    Terms of use
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023