首页 > 解决方案 > Unity 加载带有可寻址的精灵

问题描述

我对 Unity 很陌生,在做了一些研究之后,我发现了很多关于我不应该使用 Resources.Load 而是使用 Addressables 的讨论。

以前我正在加载卡片艺术

cardPrefab.cardArt.sprite = Resources.Load<Sprite>("CardSprite/Justice");

但是我似乎无法让 Addressable 工作。尝试以下操作会给我一个错误:

 Sprite Test = Addressables.LoadAssetAsync<Sprite>("CardSprite_Justice");

我收到此错误:

Cannot implicitly convert type 'UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<UnityEngine.Sprite>' to 'UnityEngine.Sprite'

这真的很令人困惑。

标签: c#unity3dsprite

解决方案


通过回调获取

private void Sprite_Completed(AsyncOperationHandle<Sprite> handle)
{
    if (handle.Status == AsyncOperationStatus.Succeeded)
    {
        Sprite result = handle.Result;
        // Sprite ready for use
    }
}

void Start()
{
    AsyncOperationHandle<Sprite> SpriteHandle = Addressables.LoadAsset<Sprite>("CardSprite_Justice");
    SpriteHandle.Completed += Sprite_Completed;
}

您可以使用协程或任务来获取它,请观看文档: https ://docs.unity3d.com/Packages/com.unity.addressables@0.7/manual/AddressableAssetsAsyncOperationHandle.html


推荐阅读