IAsyncAssetEntry
An optional capability for an asset entry that loads its asset asynchronously.
Read time 1 minuteLast updated 8 days ago
Definition
- Type: Interface
- Namespace: Unity.Localization
- Assembly: UnityEngine.LocalizationRuntimeModule
public interface IAsyncAssetEntry : IAssetEntry, IResourceEntry
Remarks
Implement this alongside IAssetEntry when the entry loads through an asynchronous operation, such as a Resources request or an Addressables handle. The localization system calls this on the asynchronous resolve paths. An entry that already has its asset in hand implements ISynchronousAssetEntry instead; the built-in entries are synchronous only.
Additional Resources: IAssetEntry, ISynchronousAssetEntry
Load an asset entry and log the result.
Examples
using System.Threading;using Unity.Localization;using UnityEngine;using Object = UnityEngine.Object;namespace Unity.Localization.Samples{ public class AsyncAssetEntryExample : ResourceEntryBase, IAssetEntry, IAsyncAssetEntry { [SerializeField] string m_ResourcePath; public AsyncAssetEntryExample(long keyId, string resourcePath) : base(keyId) => m_ResourcePath = resourcePath; public bool HasAsset() => !string.IsNullOrEmpty(m_ResourcePath); public async Awaitable<Object> LoadAssetAsync(CancellationToken cancellationToken) { if (!HasAsset()) return null; var request = Resources.LoadAsync<Object>(m_ResourcePath); await Awaitable.FromAsyncOperation(request, cancellationToken); return request.asset; } public void ReleaseAsset(Object asset) => Resources.UnloadAsset(asset); } public class IAsyncAssetEntryLoadAssetAsyncExample { public async Awaitable Run() { var shared = ScriptableObject.CreateInstance<SharedTableData>(); IAsyncAssetEntry entry = new AsyncAssetEntryExample(shared.AddKey("banner").Id, "UI/banner"); var asset = await entry.LoadAssetAsync(CancellationToken.None); if (asset != null) { Debug.Log(asset.name); entry.ReleaseAsset(asset); } } }}
Methods
Method | Description |
|---|---|
| LoadAssetAsync | Loads the asset assigned to this entry. |