Addressable异步加载资源写起来有些地方不太好控制代码结构。所以我简单做了一个AsyncTask,这样代码写起来简单易懂。
[AsyncMethodBuilder(typeof(AsyncSTaskMethodBuilder))]//指定Builder类,async修饰所必须
public class AsyncTask<T> where T : UnityEngine.Object
{
public enum AwaiterStatus
{
Pending = 0,
Succeeded = 1,
Faulted = 2,
Canceled = 3
}
private AwaiterStatus status { get; set; }
private Awaiter<T> awaiter;
T Resualt;
public Awaiter<T> GetAwaiter()
{
status = AwaiterStatus.Pending;
awaiter = new Awaiter<T>(this);
return awaiter;
}
public bool IsComplete()
{
Debug.Log($"AsyncTask -> IsCompleted????{status} {status != AwaiterStatus.Pending}");
return status != AwaiterStatus.Pending;
}
public void OnComplete(T value)
{
Debug.Log

该博客介绍了如何通过创建一个自定义的AsyncTask类来简化Unity中Addressable异步加载资源的过程,使代码更易读。AsyncTask包含了一个AwaiterStatus枚举来表示任务状态,并实现了获取等待器、检查是否完成、设置结果和获取结果的方法。在使用示例中,展示了如何加载并实例化一个资源,然后在完成时调用回调函数。
最低0.47元/天 解锁文章
986

被折叠的 条评论
为什么被折叠?



