unity3d————Resources异步加载
知识点一:Resources异步加载是什么?
在Unity中,资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行,如果加载的资源过大,可能会导致程序卡顿,因为从硬盘读取数据到内存并进行处理是需要时间的。而异步加载则是Unity内部新开一个线程进行资源加载,这样就不会造成主线程卡顿,从而提高应用的响应性和流畅性。
知识点二:Resources异步加载方法
1. 通过异步加载中的完成事件监听使用加载的资源
- 方法:使用
Resources.LoadAsync<T>()方法进行异步加载,并通过监听completed事件来获取加载完成的通知。 - 示例:
ResourceRequest rq = Resources.LoadAsync<Texture>("Tex/TestJPG");rq.completed += LoadOver; // 注册完成事件 - 注意:异步加载不能马上得到加载的资源,至少要等一帧。因此,在
completed事件触发之前尝试访问rq.asset是错误的。
2. 通过协程使用加载的资源
- 方法:在协程中使用
Resources.LoadAsync<T>()方法,并通过yield return语句等待资源加载完成。 - 示例:
IEnumerator Load(){ResourceRequest rq = Resources.LoadAsync<Texture>("Tex/TestJPG");yield return rq; // 等待资源加载完成tex = rq.asset as Texture; // 获取加载的资源} - 优点:协程允许在加载资源的同时处理其他逻辑,如更新进度条或同时加载多个资源。
- 缺点:写法相对复杂一些。
代码讲解
1.通过完成事件监听使用加载的资源(线程方式)
private Texture tex; // 声明一个Texture变量用于存储加载的资源 void Start(){// 使用Resources.LoadAsync<T>()方法进行异步加载ResourceRequest rq = Resources.LoadAsync<Texture>("bk");// 注册完成事件,当加载结束时调用LoadOver方法rq.completed += LoadOver;print(Time.frameCount);}// 完成事件的回调函数private void LoadOver(AsyncOperation operation){// 获取加载的资源tex = (operation as ResourceRequest).asset as Texture;// 输出加载完成的通知和当前帧数print("加载结束");print(Time.frameCount);}private void OnGUI(){// 在GUI中绘制加载的纹理if (tex != null)GUI.DrawTexture(new Rect(0, 0, 100, 100), tex);}
2.通过协程使用加载的资源(协程方式)
private Texture tex; // 声明一个Texture变量用于存储加载的资源void Start(){// 使用协程进行异步加载StartCoroutine(Load());}IEnumerator Load(){// 使用Resources.LoadAsync<T>()方法进行异步加载ResourceRequest rq = Resources.LoadAsync<Texture>("bk");// 输出当前帧数以观察异步加载的效果print(Time.frameCount);// 等待资源加载完成yield return rq;// 输出加载完成的通知和当前帧数print(Time.frameCount);// 获取加载的资源tex = rq.asset as Texture;// 这里可以添加额外的逻辑,如更新UI或处理加载后的资源}private void OnGUI(){// 在GUI中绘制加载的纹理if (tex != null)GUI.DrawTexture(new Rect(0, 0, 100, 100), tex);}
结果:


总结
- 异步加载:通过新开线程进行资源加载,避免主线程卡顿。
- 完成事件监听:写法简单,但只能在资源加载结束后进行处理。
- 协程异步加载:允许在加载资源的同时处理其他逻辑,写法相对复杂。
- 注意:异步加载不能马上得到加载的资源,需要等待加载完成。
相关文章:
unity3d————Resources异步加载
知识点一:Resources异步加载是什么? 在Unity中,资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行,如果加载的资源过大,可能会导致程序卡顿,因为从硬盘读取数据到内存并进行处理…...
YOLOv11改进,YOLOv11添加GnConv递归门控卷积,二次创新C3k2结构
摘要 视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnCo…...
如何选择国产化CMS来建设政务网站?
在介绍CMS之前,我们先了解国家为什么要网站为什么要完成国产化改造? 1、信创国产化网站建站响应了国家的信息安全战略,支持自主可控的信息技术产业的发展,减少对进口软硬件的依赖,保障国家信息安全。 2、国产替代&…...
C/C++语言基础--initializer_list表达式、tuple元组、pair对组简介
本专栏目的 更新C/C的基础语法,包括C的一些新特性 前言 initializer_list表达式、tuple元组、pair对组再C日常还是比较常用的,尤其是对组在刷算法还是挺好用的,这里做一个简介;这三个语法结合C17的结构化绑定会更好用ÿ…...
paddle表格识别数据制作
数据格式 其中主要数据有两个一个表格结构的检测框,一个是tokens,注意的地方是 1、只能使用双引号,单引号不行 2、使用带引号的地方是tokens里面 "<tr>", "<td", " colspan2", ">",&quo…...
python selenium库的使用:通过兴趣点获取坐标
通过兴趣点获取坐标 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.common.exceptions import TimeoutException# 保存Cookies到文件(可选) import pi…...
如何优化Kafka消费者的性能
要优化 Kafka 消费者性能,你可以考虑以下策略: 并行消费:通过增加消费者组中的消费者数量来并行处理更多的消息,从而提升消费速度。 批量消费:配置 fetch.min.bytes 和 fetch.max.wait.ms 参数来控制批量消费的大小和…...
机器学习 决策树
决策树-分类 1 概念 1、决策节点通过条件判断而进行分支选择的节点。如:将某个样本中的属性值(特征值)与决策节点上的值进行比较,从而判断它的流向。 2、叶子节点没有子节点的节点,表示最终的决策结果。 3、决策树的深度所有节点的最大层…...
效益登记册效益管理计划
效益登记册 benefit Register效益管理计划效益登记册汇集并列出项目集计划的效益,用于在项目集的整个持续时间内测量和沟通效益的交付。在效益识别阶段,效益登记册根据项目集商业论证、组织战略计划和其他相关项目集自标而编制。随后,登记册由…...
Go语言的零值可用性:优势与限制
Go语言以其简洁和高效的设计理念而著称,其中之一便是“零值可用”的特性。这一特性使得许多类型在未显式初始化时即可直接安全地使用,大大简化了代码的初始化过程。然而,并非所有类型都支持零值可用,且在使用时也存在一定的限制。…...
【自用】0-1背包问题与完全背包问题的Java实现
引言 背包问题是计算机科学领域的一个经典优化问题,分为多种类型,其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益,但它们之间存在一些关键的区别:0-1背包问题允许每个物品只能选择…...
HTML5实现俄罗斯方块小游戏
文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/143788449 HTML5实现俄罗斯方块小游戏&#x…...
Mybatis官方生成器使用示例
在这篇文章中,我们将通过实际代码示例来说明如何使用 MyBatis Generator (MBG) 来自动化生成 MyBatis 项目所需的实体类、Mapper 接口和 Mapper XML 文件。我们将使用一个 Maven 插件来执行代码生成,并提供详细的配置和解释。 1. MyBatis Generator 简介…...
演员王子辰—专注革命题材 《前行者》后再出发
2021年10月22日在北京卫视播出的由张鲁一、聂远等人主演的电视剧《前行者》,讲述了在二十世纪三十年代初,因叛徒出卖,我上海地下党组织遭到严重破坏,革命事业陷入一片白色恐怖之中。我党情报员马天目刚从法国归来,临危…...
Spring Boot基础教学:创建第一个Spring Boot项目
使用Spring Initializr生成项目 Spring Initializr是一个在线工具,用于快速生成Spring Boot项目的基本结构。以下是使用Spring Initializr创建项目的步骤: 步骤1:访问Spring Initializr 打开网址 start.spring.io。 步骤2:选择…...
基于SpringBoot+Vue实现校园多媒体信息共享平台
作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,…...
WebRTC API分析
主题 本文详细描述常用的webrtc api 媒体协商类 myPeerConnection.createOffer([options]); var options { offerToReceiveAudio: true, // 告诉另一端,你是否想接收音频,默认true offerToReceiveVideo: true, // 告诉另一端&a…...
ArkTS学习笔记:ArkTS起步
ArkTS是HarmonyOS的主力应用开发语言,基于TypeScript扩展,强化了静态检查和分析,旨在提升程序稳定性和性能。它采用静态类型,禁止运行时改变对象布局,并对UI开发框架能力进行扩展,支持声明式UI描述和自定义…...
spring-gateway网关聚合swagger实现多个服务接口切换
前提条件 微服务已经集成了swagger,并且注册进了nacos。 gateway配置 package com.zmy.springcloud.config;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springfra…...
关于 Oracle Database Express Edition 的功能和安装
Oracle Database Express Edition,简称 Oracle Database XE。是一个免费的版本,主要用于培训和一些功能要求比较简单,又需要免费分发的场景。 看看官方的说明: Whether you are a developer, a DBA, a data scientist, an educat…...
【c++面向对象编程】第30篇:RAII与智能指针(一):auto_ptr的缺陷与unique_ptr
目录 一、一个手动管理的痛点 二、RAII 核心思想 三、auto_ptr:C98 的尝试与缺陷 auto_ptr 的核心缺陷 四、unique_ptr:真正的独占式智能指针 基本用法 常用成员函数 五、unique_ptr 与数组 六、自定义删除器 七、make_unique(C14&a…...
免费APK安装器:Windows上安装Android应用的终极解决方案
免费APK安装器:Windows上安装Android应用的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾想过在Windows电脑上直接运行Android应用&…...
RT-Thread实战:AB32VG1驱动I2C OLED屏实现上电自启动
1. 项目概述与核心思路最近在折腾中科蓝讯的AB32VG1开发板,想用它来驱动一块I2C接口的OLED屏幕。在网上搜了一圈,发现大部分教程都停留在“官方例程”的层面——也就是在RT-Thread的msh(类似shell的命令行)里输入指令来测试驱动。…...
应对2026知网维普算法更新:论文降AI全攻略,实测3款主流工具与手动微调方法
自从央视公开探讨初稿写作的AI味儿现象:据相关数据显示,近六成师生习惯使用生成式辅助,其中近三成学生将其用于核心初稿的撰写,各高校针对AIGC的审查便日益严格。 正是因为这种大背景,四月一到,定稿通知刚…...
AI 写代码编译器却只给人看,Zero:一门给 Agent 设计的系统编程语言,让一切副作用显式可见
Vercel 的实验室最近放出一个叫 Zero 的东西,一门自称"给 Agent 用的系统编程语言",2026 年 5 月刚发布 v0.1.1,编译器用 C 写的,文件后缀是 .0。单凭这个后缀,就知道这是一门不肯对任何既有生态妥协的新语言…...
5分钟掌握全平台炫酷抽奖:Magpie-LuckyDraw开源项目深度解析
5分钟掌握全平台炫酷抽奖:Magpie-LuckyDraw开源项目深度解析 【免费下载链接】Magpie-LuckyDraw 🏅A fancy lucky-draw tool supporting multiple platforms💻(Mac/Linux/Windows/Web/Docker) 项目地址: https://gitcode.com/gh_mirrors/ma…...
告别系统默认驱动:手把手教你为沁恒CH38x/CH35x PCIe串口卡加载官方Linux驱动(含常见错误排查)
告别系统默认驱动:手把手教你为沁恒CH38x/CH35x PCIe串口卡加载官方Linux驱动(含常见错误排查) 在嵌入式开发和工业控制领域,串口通信的稳定性和功能完整性往往直接影响整个系统的可靠性。当使用沁恒CH38x/CH35x系列PCIe串口卡时…...
开源物联网网关openclaw-gateway:架构解析与本地化智能家居部署实践
1. 项目概述与核心价值最近在折腾一些物联网和智能家居项目,发现一个挺有意思的东西,叫openclaw-gateway。这名字听起来有点“机械感”,claw是爪子,gateway是网关,合起来像是一个“开放爪子的网关”。乍一看可能有点摸…...
iOS激活锁完美绕过:AppleRa1n完整教程与操作指南
iOS激活锁完美绕过:AppleRa1n完整教程与操作指南 【免费下载链接】applera1n icloud bypass for ios 15-16 项目地址: https://gitcode.com/gh_mirrors/ap/applera1n 如果您正面临iPhone设备被激活锁困扰的困境,这篇AppleRa1n完整指南将为您提供专…...
Sendwithus模板与现代邮件客户端兼容性测试:终极解决方案
Sendwithus模板与现代邮件客户端兼容性测试:终极解决方案 【免费下载链接】templates Sendwithus Open Source Email Templates 项目地址: https://gitcode.com/gh_mirrors/temp/templates Sendwithus Open Source Email Templates是一套强大的开源邮件模板集…...
