• 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来完成加载完成实例化,第二种则是系统帮助我们完成了是否加载完成判断。

     

  • 相关阅读:
    【侯捷C++-----STL与泛型编程】
    低代码能为企业带来什么好处
    Docker
    【直播笔记0819】 面试必问之微服务架构
    基于STM32CUBEMX驱动TOF模块VL53l0x(2)----修改设备地址
    java-利用单元测试junit测试接口的多线程并发性能
    【latex】usepackage的各种包简介(持更)
    【DL论文精读笔记】Image Segmentation Using Deep Learning: A Survey 图像分割综述
    2.Tornado的优势
    用DIV+CSS技术制作个人博客网站(web前端网页制作课期末作业)
  • 原文地址:https://blog.csdn.net/qq_42705793/article/details/127692906