• Unity-资源异步加载


     知识点一  Resources异步加载是什么

     知识点二 Resources异步加载方法

     1、通过异步加载中的完成事件监听 使用加载的资源

     当我们使用Resources的LoadAsdync函数进行异步加载文件时,如果我们只是做到这一步,那么运行起来是没有任何效果的。这里完成的仅仅只是将配置环境、数据加载。这里就有一个问题了,我们如果知道它是否加载完毕?

    看一下它的返回类型是一个ResourcesRequest类型,进入内部:

    它的基类AsyncOperation,有一个事件,completed

     当加载完成后,这个函数会调用completed事件,通知外部加载完毕了。我们可以通过监听这个事件去检测加载是否完成。给completed事件加一个新的委托,当加载完成时系统调用completed,执行LoadOver(AsyncOperation rq)。打印加载结束。

     加载完成图片,我们需要使用它。我们在OnGUI中去使用。

    注意这个判断是否为null,异步加载是需要一定时间去加载文件的。不是马上就完成加载。因此要做出一个条件判断。

    什么时候将资源实例化呢?

     当异步加载完成时,asset这个公共属性会得到加载的资源。我们通过调用asset来得到里面的内容。

    注意这里需要两次as 转换

    第一次as: 因为asset是ResourcesRequest的属性。所以将AsyncOperation转为ResourcesRequest

    第二次as:asset返回的是Object类型,我们要用Texture去接收。所以是Object转Texture;

     2、通过协程使用加载的资源

    首先创建一个协程:

     yield return 会返回一些特点的内容。将rq作为yield return的返回值。

     ResourcesRequest基类为AsyncOperation

     AsyncOperation为YieldInstryction

    WaitForSeconds基类也是YieldInstryction。

     证明ResourcesRequest 也是和协程有关系的。

     当资源加载完,才会执行后面的代码。资源加载完后,将图片实例化。

     测试:

     属性的使用。

     以上的两种方法,无论是通过时间completed还是通过协程,主要都是解决的一个问题,文件是否加载完成?因为我那么只有当文件加载完成,才能进行实例化。而第一种方法,是使用completed来完成加载完成实例化,第二种则是系统帮助我们完成了是否加载完成判断。

     

  • 相关阅读:
    54. 螺旋矩阵
    a16z:2024年GenAI市场将爆发
    umi4 React项目使用icon集合
    网络安全系列-四十二: Suricata之rulesets的激活、更新及动态加载
    Win10 固定IP地址方法
    菜单子节点的写法
    网络穿透:TCP 打洞、UDP 打洞与 UPnP
    Mac上搭建Python环境:深入探索与高效实践
    使用Tensorboard在 PyTorch 中进行可视化
    buuctf web [极客大挑战 2019]LoveSQL
  • 原文地址:https://blog.csdn.net/qq_42705793/article/details/127692906