有没有不使用Task的方法?
时间: 2023-09-08 14:15:07 浏览: 39
有的,可以使用 Unity 的异步操作方式,即使用 AsyncOperation 和 Coroutine。
修改后的代码如下:
```
public IEnumerator Get2DSpriteAsync(string resName, Action<Sprite> callback)
{
var assetRequest = Resources.LoadAsync<Sprite>(resName);
yield return assetRequest;
if (assetRequest.asset == null)
{
var defaultRequest = Resources.LoadAsync<Sprite>(DefaultSpriteRes);
yield return defaultRequest;
callback(defaultRequest.asset as Sprite);
}
else
{
callback(assetRequest.asset as Sprite);
}
}
```
其中,使用 Resources.LoadAsync() 方法异步加载资源,使用 yield return 等待资源加载完成。同时,使用了 callback 回调函数的方式,将异步操作的结果返回给调用者。
使用 Coroutine 的方式可以避免使用 Task 和 async/await,但需要使用 IEnumerator 和 yield,代码复杂度较高,不如使用 Task 简洁易读。