Unity使用可寻址对象加载精灵

时间:2019-10-03 01:44:01

标签: c# unity3d sprite

我对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'

这真是令人困惑。

1 个答案:

答案 0 :(得分:0)

通过回调获取

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