我对Unity非常陌生,在做了一些研究之后,我发现了很多关于我不应该使用Resources.Load而是使用Addressable的讨论。
以前我是用来加载卡片的
cardPrefab.cardArt.sprite = Resources.Load<Sprite>("CardSprite/Justice");然而,我似乎无法获得可寻址的工作。尝试执行以下操作会出现错误:
Sprite Test = Addressables.LoadAssetAsync<Sprite>("CardSprite_Justice");我得到了这个错误:
Cannot implicitly convert type 'UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle<UnityEngine.Sprite>' to 'UnityEngine.Sprite'这真的很让人困惑。
发布于 2019-10-03 10:33:15
通过回调获取
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
https://stackoverflow.com/questions/58211306
复制相似问题