c# - 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'
这真的很令人困惑。
解决方案
通过回调获取
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
推荐阅读
- react-native - 从标题 react-navigation 中删除返回按钮
- emacs - 如何在emacs org模式下计算子树的字符?
- php - 另一个函数中的 PHP 函数不能引用`$this`
- javascript - 如何在 laravel 应用程序中配置 webpack-dev-server?
- python - 自动调整 tkinter 窗口大小以适应所有小部件
- r - 以闪亮的应用程序形式保存答案
- ruby - rails 5:提交表单时我没有收到任何错误,但我的数据没有存储在数据库中。为什么?
- bazel - 如何查询 bazel 测试使用的数据文件列表
- tfs - VSTS REST API - 获取指定日期后更改的项目列表
- php - 继续消息 strpos 停止的地方