Method LoadAssetAsync
LoadAssetAsync<TObject>(IResourceLocation)
Loads a single Addressable asset identified by an IResourceLocation.
Declaration
public static AsyncOperationHandle<TObject> LoadAssetAsync<TObject>(IResourceLocation location)Parameters
| Type | Name | Description | 
|---|---|---|
| IResourceLocation | location | The location of the asset. | 
Returns
| Type | Description | 
|---|---|
| AsyncOperationHandle<TObject> | AsyncOperationHandle that is used to check when the operation has completed. The result of the operation is the loaded asset of the type  | 
Type Parameters
| Name | Description | 
|---|---|
| TObject | The type of the asset. | 
Remarks
Loads an Addressable asset. If a key references multiple assets (i.e. a label that is assigned to multiple assets), only the first asset found will be loaded.
When you load an Addressable asset, the system:
- Gathers the asset's dependencies
- Downloads any remote AssetBundles needed to load the asset or its dependencies
- Loads the AssetBundles into memory
- Populates the Resultobject of the AsyncOperationHandle<TObject> instance returned by this function.
Examples
The example below loads a material using an IResourceLocation. The loaded material is assigned to a GameObject. A reference to the operation handle is stored and can be released via Release(AsyncOperationHandle).
public AssetReference materialLocation; // Identify the material
public GameObject goLocation; // Identify the GameObject
AsyncOperationHandle<Material> instHandleLocation;
AsyncOperationHandle<IList<IResourceLocation>> locHandle;
public void UsingLoadAssetAsyncSampleLocation()
{
    locHandle = Addressables.LoadResourceLocationsAsync(materialLocation, typeof(Material));
    locHandle.Completed += OnLoadComplete;
}
void OnLoadComplete(AsyncOperationHandle<IList<IResourceLocation>> handle)
{
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
        Debug.Log($"Successfully loaded resource locations");
        foreach (IResourceLocation location in handle.Result)
        {
            instHandleLocation = Addressables.LoadAssetAsync<Material>(location);
            instHandleLocation.Completed += OnLoadCompleteLocation;
        }
    }
}
void OnLoadCompleteLocation(AsyncOperationHandle<Material> handle)
{
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
        var loadedMaterial = handle.Result;
        Debug.Log($"Successfully loaded material '{loadedMaterial.name}'");
        var renderer = goLocation.GetComponent<MeshRenderer>();
        if (renderer == null)
            renderer = goLocation.AddComponent<MeshRenderer>();
        renderer.material = loadedMaterial;
        Debug.Log($"Assigned loaded material to GameObject named '{goLocation.name}'");
    }
}
void ReleaseResourcesLocation()
{
    locHandle.Release();
    instHandleLocation.Release();
}
// When ready to release the asset, call ReleaseResourcesLocation().
// For example during OnDestroy().
// void OnDestroy()
// {
//     ReleaseResourcesLocation();
// }The example below loads a material using a key, specifically an AssetReference. The loaded material is assigned to a GameObject. A reference to the
operation handle is stored and can be released via Release(AsyncOperationHandle).
public AssetReference materialKey; // Identify the material
public GameObject goKey; // Identify the GameObject
AsyncOperationHandle<Material> handleKey;
public void UsingLoadAssetAsyncSampleKey()
{
    handleKey = Addressables.LoadAssetAsync<Material>(materialKey);
    handleKey.Completed += OnLoadCompleteKey;
}
void OnLoadCompleteKey(AsyncOperationHandle<Material> handle)
{
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
        var loadedMaterial = handle.Result;
        Debug.Log($"Successfully loaded material '{loadedMaterial.name}'");
        var renderer = goKey.GetComponent<MeshRenderer>();
        if (renderer == null)
            renderer = goKey.AddComponent<MeshRenderer>();
        renderer.material = loadedMaterial;
        Debug.Log($"Assigned loaded material to GameObject named '{goKey.name}'");
    }
}
void ReleaseResourcesKey()
{
    handleKey.Release();
}
// When ready to release the asset, call ReleaseResourcesKey().
// For example during OnDestroy().
//void OnDestroy()
//{
//    ReleaseResourcesKey();
//}See Also
LoadAssetAsync<TObject>(object)
Loads a single Addressable asset identified by an IResourceLocation.
Declaration
public static AsyncOperationHandle<TObject> LoadAssetAsync<TObject>(object key)Parameters
| Type | Name | Description | 
|---|---|---|
| object | key | The key of the location of the asset. | 
Returns
| Type | Description | 
|---|---|
| AsyncOperationHandle<TObject> | AsyncOperationHandle that is used to check when the operation has completed. The result of the operation is the loaded asset of the type  | 
Type Parameters
| Name | Description | 
|---|---|
| TObject | The type of the asset. |