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 ''");
    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 ''");
    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.  |