我对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'
这真是令人困惑。
答案 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