当前位置: 首页 > news >正文

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异步加载

知识点一&#xff1a;Resources异步加载是什么&#xff1f; 在Unity中&#xff0c;资源加载可以分为同步加载和异步加载两种方式。同步加载会在主线程中直接进行&#xff0c;如果加载的资源过大&#xff0c;可能会导致程序卡顿&#xff0c;因为从硬盘读取数据到内存并进行处理…...

YOLOv11改进,YOLOv11添加GnConv递归门控卷积,二次创新C3k2结构

摘要 视觉 Transformer 在多种任务中取得了显著的成功,这得益于基于点积自注意力的新空间建模机制。视觉 Transformer 中的关键因素——即输入自适应、长距离和高阶空间交互——也可以通过卷积框架高效实现。作者提出了递归门控卷积(Recursive Gated Convolution,简称 gnCo…...

如何选择国产化CMS来建设政务网站?

在介绍CMS之前&#xff0c;我们先了解国家为什么要网站为什么要完成国产化改造&#xff1f; 1、信创国产化网站建站响应了国家的信息安全战略&#xff0c;支持自主可控的信息技术产业的发展&#xff0c;减少对进口软硬件的依赖&#xff0c;保障国家信息安全。 2、国产替代&…...

C/C++语言基础--initializer_list表达式、tuple元组、pair对组简介

本专栏目的 更新C/C的基础语法&#xff0c;包括C的一些新特性 前言 initializer_list表达式、tuple元组、pair对组再C日常还是比较常用的&#xff0c;尤其是对组在刷算法还是挺好用的&#xff0c;这里做一个简介&#xff1b;这三个语法结合C17的结构化绑定会更好用&#xff…...

paddle表格识别数据制作

数据格式 其中主要数据有两个一个表格结构的检测框&#xff0c;一个是tokens&#xff0c;注意的地方是 1、只能使用双引号&#xff0c;单引号不行 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到文件&#xff08;可选&#xff09; import pi…...

如何优化Kafka消费者的性能

要优化 Kafka 消费者性能&#xff0c;你可以考虑以下策略&#xff1a; 并行消费&#xff1a;通过增加消费者组中的消费者数量来并行处理更多的消息&#xff0c;从而提升消费速度。 批量消费&#xff1a;配置 fetch.min.bytes 和 fetch.max.wait.ms 参数来控制批量消费的大小和…...

机器学习 决策树

决策树-分类 1 概念 1、决策节点通过条件判断而进行分支选择的节点。如&#xff1a;将某个样本中的属性值(特征值)与决策节点上的值进行比较&#xff0c;从而判断它的流向。 2、叶子节点没有子节点的节点&#xff0c;表示最终的决策结果。 3、决策树的深度所有节点的最大层…...

效益登记册效益管理计划

效益登记册 benefit Register效益管理计划效益登记册汇集并列出项目集计划的效益&#xff0c;用于在项目集的整个持续时间内测量和沟通效益的交付。在效益识别阶段&#xff0c;效益登记册根据项目集商业论证、组织战略计划和其他相关项目集自标而编制。随后&#xff0c;登记册由…...

Go语言的零值可用性:优势与限制

Go语言以其简洁和高效的设计理念而著称&#xff0c;其中之一便是“零值可用”的特性。这一特性使得许多类型在未显式初始化时即可直接安全地使用&#xff0c;大大简化了代码的初始化过程。然而&#xff0c;并非所有类型都支持零值可用&#xff0c;且在使用时也存在一定的限制。…...

【自用】0-1背包问题与完全背包问题的Java实现

引言 背包问题是计算机科学领域的一个经典优化问题&#xff0c;分为多种类型&#xff0c;其中最常见的是0-1背包问题和完全背包问题。这两种问题的核心在于如何在有限的空间内最大化收益&#xff0c;但它们之间存在一些关键的区别&#xff1a;0-1背包问题允许每个物品只能选择…...

HTML5实现俄罗斯方块小游戏

文章目录 1.设计来源1.1 主界面1.2 皮肤风格1.2 游戏中界面1.3 游戏结束界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/143788449 HTML5实现俄罗斯方块小游戏&#x…...

Mybatis官方生成器使用示例

在这篇文章中&#xff0c;我们将通过实际代码示例来说明如何使用 MyBatis Generator (MBG) 来自动化生成 MyBatis 项目所需的实体类、Mapper 接口和 Mapper XML 文件。我们将使用一个 Maven 插件来执行代码生成&#xff0c;并提供详细的配置和解释。 1. MyBatis Generator 简介…...

演员王子辰—专注革命题材 《前行者》后再出发

2021年10月22日在北京卫视播出的由张鲁一、聂远等人主演的电视剧《前行者》&#xff0c;讲述了在二十世纪三十年代初&#xff0c;因叛徒出卖&#xff0c;我上海地下党组织遭到严重破坏&#xff0c;革命事业陷入一片白色恐怖之中。我党情报员马天目刚从法国归来&#xff0c;临危…...

Spring Boot基础教学:创建第一个Spring Boot项目

使用Spring Initializr生成项目 Spring Initializr是一个在线工具&#xff0c;用于快速生成Spring Boot项目的基本结构。以下是使用Spring Initializr创建项目的步骤&#xff1a; 步骤1&#xff1a;访问Spring Initializr 打开网址 start.spring.io。 步骤2&#xff1a;选择…...

基于SpringBoot+Vue实现校园多媒体信息共享平台

作者简介&#xff1a;Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验&#xff0c;被多个学校常年聘为校外企业导师&#xff0c;指导学生毕业设计并参与学生毕业答辩指导&#xff0c;…...

WebRTC API分析

主题 本文详细描述常用的webrtc api 媒体协商类 myPeerConnection.createOffer([options]); var options { offerToReceiveAudio: true, // 告诉另一端&#xff0c;你是否想接收音频&#xff0c;默认true offerToReceiveVideo: true, // 告诉另一端&a…...

ArkTS学习笔记:ArkTS起步

ArkTS是HarmonyOS的主力应用开发语言&#xff0c;基于TypeScript扩展&#xff0c;强化了静态检查和分析&#xff0c;旨在提升程序稳定性和性能。它采用静态类型&#xff0c;禁止运行时改变对象布局&#xff0c;并对UI开发框架能力进行扩展&#xff0c;支持声明式UI描述和自定义…...

spring-gateway网关聚合swagger实现多个服务接口切换

前提条件 微服务已经集成了swagger&#xff0c;并且注册进了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&#xff0c;简称 Oracle Database XE。是一个免费的版本&#xff0c;主要用于培训和一些功能要求比较简单&#xff0c;又需要免费分发的场景。 看看官方的说明&#xff1a; Whether you are a developer, a DBA, a data scientist, an educat…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解

JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用&#xff0c;结合SQLite数据库实现联系人管理功能&#xff0c;并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能&#xff0c;同时可以最小化到系统…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测

uniapp 中配置 配置manifest 文档&#xff1a;manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号&#xff1a;4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...