127 lines
7.7 KiB
Markdown
127 lines
7.7 KiB
Markdown
|
---
|
||
|
uid: addressables-loading-multiple-assets
|
||
|
---
|
||
|
|
||
|
# Loading multiple assets
|
||
|
|
||
|
Use the [LoadAssetsAsync] method to load more than one Addressable asset in a single operation. When using this function, you can specify a single key, such as a label, or a list of keys.
|
||
|
|
||
|
When you specify multiple keys, you can specify a [merge mode] to determine how the sets of assets matching each key are combined:
|
||
|
|
||
|
* __Union __: include assets that match any key
|
||
|
* __Intersection __: include assets that match every key
|
||
|
* __UseFirst__: include assets only from the first key that resolves to a valid location
|
||
|
|
||
|
[!code-cs[sample](../../Tests/Editor/DocExampleCode/LoadMultiple.cs#doc_Load)]
|
||
|
|
||
|
<!--
|
||
|
```csharp
|
||
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.AddressableAssets;
|
||
|
using UnityEngine.ResourceManagement.AsyncOperations;
|
||
|
|
||
|
public class LoadWithLabels : MonoBehaviour
|
||
|
{
|
||
|
// Label strings to load
|
||
|
public List<string> keys = new List<string>(){"characters", "animals"};
|
||
|
|
||
|
// Operation handle used to load and release assets
|
||
|
AsyncOperationHandle<IList<GameObject>> loadHandle;
|
||
|
|
||
|
// Load Addressables by Label
|
||
|
public IEnumerator Start() {
|
||
|
float x = 0, z = 0;
|
||
|
loadHandle = Addressables.LoadAssetsAsync<GameObject>(
|
||
|
keys,
|
||
|
addressable => {
|
||
|
//Gets called for every loaded asset
|
||
|
Instantiate<GameObject>(addressable,
|
||
|
new Vector3(x++ * 2.0f, 0, z * 2.0f),
|
||
|
Quaternion.identity,
|
||
|
transform);
|
||
|
|
||
|
if (x > 9)
|
||
|
{
|
||
|
x = 0;
|
||
|
z++;
|
||
|
}
|
||
|
}, Addressables.MergeMode.Union, // How to combine multiple labels
|
||
|
false); // Whether to fail and release if any asset fails to load
|
||
|
|
||
|
yield return loadHandle;
|
||
|
}
|
||
|
|
||
|
private void OnDestroy() {
|
||
|
Addressables.Release(loadHandle); // Release all the loaded assets associated with loadHandle
|
||
|
}
|
||
|
}
|
||
|
```
|
||
|
-->
|
||
|
|
||
|
You can specify how to handle loading errors with the `releaseDependenciesOnFailure` parameter. If true, then the operation fails if it encounters an error loading any single asset. The operation and any assets that did successfully load are released.
|
||
|
|
||
|
If false, then the operation loads any objects that it can and does not release the operation. In the case of failures, the operation still completes with a status of Failed. In addition, the list of assets returned has null values where the failed assets would otherwise appear.
|
||
|
|
||
|
Set `releaseDependenciesOnFailure` to true when loading a group of assets that must be loaded as a set in order to be used. For example, if you are loading the assets for a game level, it might make sense to fail the operation as a whole rather than load only some of the required assets.
|
||
|
|
||
|
[ActivateAsync]: xref:UnityEngine.ResourceManagement.ResourceProviders.SceneInstance.ActivateAsync*
|
||
|
[Addressables.ClearDependencyCacheAsync]: xref:UnityEngine.AddressableAssets.Addressables.ClearDependencyCacheAsync*
|
||
|
[Addressables.DownloadDependenciesAsync]: xref:UnityEngine.AddressableAssets.Addressables.DownloadDependenciesAsync*
|
||
|
[Addressables.GetDownloadSizeAsync]: xref:UnityEngine.AddressableAssets.Addressables.GetDownloadSizeAsync*
|
||
|
[Addressables.InstantiateAsync]: xref:UnityEngine.AddressableAssets.Addressables.InstantiateAsync*
|
||
|
[Addressables.LoadAssetAsync]: xref:UnityEngine.AddressableAssets.Addressables.LoadAssetAsync*
|
||
|
[Addressables.LoadSceneAsync]: xref:UnityEngine.AddressableAssets.Addressables.LoadSceneAsync*
|
||
|
[Addressables.ReleaseInstance]: xref:UnityEngine.AddressableAssets.Addressables.ReleaseInstance*
|
||
|
[Addressables]: xref:UnityEngine.AddressableAssets.Addressables
|
||
|
[Application.backgroundLoadingPriority]: xref:UnityEngine.Application.backgroundLoadingPriority
|
||
|
[AssetReference]: xref:UnityEngine.AddressableAssets.AssetReference
|
||
|
[AssetReferences]: xref:addressables-asset-references
|
||
|
[AsyncOperation.priority]: xref:UnityEngine.AsyncOperation.priority
|
||
|
[cache settings]: xref:UnityEngine.Cache
|
||
|
[Check Duplicate Bundle Dependencies]: AnalyzeTool.md#check-duplicate-bundle-dependencies
|
||
|
[GetDownloadStatus]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.GetDownloadStatus*
|
||
|
[Instantiate]: xref:UnityEngine.Object.Instantiate*
|
||
|
[InstantiateAsync]: xref:UnityEngine.AddressableAssets.Addressables.InstantiateAsync*
|
||
|
[InstantiationParameters]: xref:UnityEngine.ResourceManagement.ResourceProviders.InstantiationParameters
|
||
|
[IResourceLocation]: xref:UnityEngine.ResourceManagement.ResourceLocations.IResourceLocation
|
||
|
[AsyncOperationHandle]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle-1
|
||
|
[AsyncOperationHandle.Task]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle-1.Task.html
|
||
|
[Completed callback]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle-1.Completed.html
|
||
|
[Coroutine]: xref:UnityEngine.Coroutine*
|
||
|
[HideFlags.DontUnloadUnusedAsset]: xref:UnityEngine.HideFlags.DontUnloadUnusedAsset
|
||
|
[LoadAssetAsync]: xref:UnityEngine.AddressableAssets.Addressables.LoadAssetAsync*
|
||
|
[LoadAssetsAsync]: xref:UnityEngine.AddressableAssets.Addressables.LoadAssetsAsync*
|
||
|
[LoadResourceLocationsAsync]: xref:UnityEngine.AddressableAssets.Addressables.LoadResourceLocationsAsync*
|
||
|
[LoadSceneMode.Single]: xref:UnityEngine.SceneManagement.LoadSceneMode.Single
|
||
|
[Memory Management]: xref:addressables-memory-management
|
||
|
[merge mode]: xref:UnityEngine.AddressableAssets.Addressables.MergeMode
|
||
|
[Object.DontDestroyOnLoad]: xref:UnityEngine.Object.DontDestroyOnLoad(UnityEngine.Object)
|
||
|
[OperationException]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.OperationException
|
||
|
[Operations]: xref:addressables-async-operation-handling
|
||
|
[PrimaryKey]: xref:UnityEngine.ResourceManagement.ResourceLocations.IResourceLocation.PrimaryKey
|
||
|
[Releasing Addressable assets]: #releasing-addressable-assets
|
||
|
[ResourceManager.Acquire]: xref:UnityEngine.ResourceManagement.ResourceManager.Acquire(UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle)
|
||
|
[ResourceManager.CreateGenericGroupOperation]: xref:UnityEngine.ResourceManagement.ResourceManager.CreateGenericGroupOperation*
|
||
|
[Resources.UnloadUnusedAssets]: xref:UnityEngine.Resources.UnloadUnusedAssets
|
||
|
[Result]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.Result
|
||
|
[SceneManager.LoadSceneAsync]: xref:UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(System.String,UnityEngine.SceneManagement.LoadSceneMode)
|
||
|
[Status]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.Status
|
||
|
[UnityEngine.Caching]: xref:UnityEngine.Caching
|
||
|
[ResourceManager.ExceptionHandler]: xref:UnityEngine.ResourceManagement.ResourceManager.ExceptionHandler
|
||
|
[Log Runtime Exceptions]: xref:addressables-asset-settings#diagnostics
|
||
|
[Console]: xref:Console
|
||
|
[Object.Instantiate]: xref:UnityEngine.Object.Instantiate*
|
||
|
[addresses]: xref:addressables-overview#asset-addresses
|
||
|
[labels]: xref:addressables-labels
|
||
|
[Completed]: xref:UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.Completed
|
||
|
[AsyncOperation.allowSceneActivation]: xref:UnityEngine.AsyncOperation.allowSceneActivation
|
||
|
[SceneInstance]: xref:UnityEngine.ResourceManagement.ResourceProviders.SceneInstance
|
||
|
[LoadSceneAsync]: xref:UnityEngine.SceneManagement.SceneManager.LoadSceneAsync(System.String,UnityEngine.SceneManagement.LoadSceneMode)
|
||
|
[UnloadAsset]: xref:UnityEngine.Resources.UnloadAsset(UnityEngine.Object)
|
||
|
[Addressables.InstantiateAsync]: xref:UnityEngine.AddressableAssets.Addressables.InstantiateAsync*
|
||
|
[Scene loading project]: https://github.com/Unity-Technologies/Addressables-Sample/tree/master/Basic/Scene%20Loading
|
||
|
[Addressables-Sample]: https://github.com/Unity-Technologies/Addressables-Sample
|
||
|
[Synchronous Addressables]: xref:synchronous-addressables
|
||
|
[Unloading Addressables]: xref:addressables-unloading
|