位置: 编程技术 - 正文

Unity 使用WWW类同步加载资源

编辑:rootadmin

推荐整理分享Unity 使用WWW类同步加载资源,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

Unity加载资源有两种方式:1.Resources.Load(). 2.AssetBundle

前者属于同步加载,后者一般认为属于异步加载,Unity官方也只提供异步这种方式,其实也可以同步的哦。(习惯按Ctrl &#; S 好烦)

异步加载方式:

IEnumerator LoadAssets(string path)

{

WWW www = new WWW(path);

yield return www;

}

Unity 使用WWW类同步加载资源

void StartLoad()

{

StartCoroutine(LoadAssets(path));

}

StartCoroutine在unity3d的帮助中叫做协程,意思就是启动一个辅助的线程。在C#中协程要定义为IEnumerator (实现式接口)这个类型.它声明实现该接口的类就可以作为一个迭代器iterator。所以说属于异步加载

但是在开发项目前期使用Resources(同步)加载资源,到了后期项目需要做增量更新,那就得使用WWW类进行加载(听说还有其他非WWW加载方式,希望大家分享下),同步改成异步那可不是说改就能改的,很多逻辑都需要重新处理才行。其实使用WWW类进行加载并不一定是异步的,也可以处理成同步加载(也让我纠结一上午,浏览网页是突然想到可以使用IEnumerable试试,没想到成功了,哈哈(还是自己太懒,不想大面积改代码)),其实同学一看就明白,下面直接上代码:

using UnityEngine;using System.Collections;using System.Collections.Generic;public class LoadAsset { private string m_sPath = string.Empty;//资源路径 private WWW m_www = null; private int m_iCountRetry = 5;//重复下载次数 public LoadAsset(string path) { m_sPath = path; } public UnityEngine.Object StarLoad() { UnityEngine.Object result = null; while (result == null) { foreach (UnityEngine.Object obj in LoadWWW()) { result = obj; } if (m_iCountRetry > 0) { if (result != null) { break; } m_iCountRetry--; } else { break; } } DeInit(); return result; } public IEnumerable<UnityEngine.Object> LoadWWW() { m_www = new WWW(m_sPath); yield return m_www.assetBundle.mainAsset; } private void DeInit() { if(m_www != null) { m_www.Dispose(); } m_www = null; }}public class ResLoad{ private static ResLoad instance = null; public static ResLoad Instance { get { if (instance == null) { instance = new ResLoad(); } return instance; } } public UnityEngine.Object StarLoad(string path) { UnityEngine.Object obj = null; LoadAsset asset = new LoadAsset(path); obj = asset.StarLoad(); return obj; } public T StarLoad<T>(string path) { LoadAsset asset = new LoadAsset(path); object obj = asset.StarLoad() as object; return ((T)obj); }}

上面是我开发项目的源码,拷贝可以直接使用!是不是很简单,如有没说到的地方,希望大家补充,多喷喷!

转载请说明输出:

Unity3d 人物换装之 一个Shader处理3张图片 减少DrawCall 在上一篇Unity3d人物换装之Mesh合并(材质合并)中,我通过一个例子,将三个带有不同颜色RGB的立方体,合并Mesh和材质到Character这一个GameObject中。这样原

【猫猫的Unity Shader之旅】之简述3D图形学 上次我们说到一个完整的Shader的比较完整的框架,如果大家之前没有接触过3D相关的技术的话看起来可能会比较吃力,其实这也在猫猫的意料之中的。3D

Unity3D游戏开发之在Android视图中嵌入Unity视图 转载自:

标签: Unity 使用WWW类同步加载资源

本文链接地址:https://www.jiuchutong.com/biancheng/384563.html 转载请保留说明!

上一篇:三角形攻击区域(三角进攻怎么打)

下一篇:Unity3d 人物换装之 一个Shader处理3张图片 减少DrawCall(unity2d角色换装)

  • 小规模升级为一般人后之前取得的增值税专用发票抵扣
  • 车辆购置税的税率是多少
  • 企业所得税季度申报
  • 劳务公司劳务协议范本
  • 劳务费确认收入
  • 生产加工型企业经营范围
  • 科目期初余额的录入需要从上级科目开始
  • 补发工资计算公式
  • 提前退休取得的一次性补贴收入
  • 存货盘盈与盘亏
  • 从境外取得的佣金
  • etc预付卡发票能不能报销
  • 工程款发票遗失怎么处理
  • 保险公司联合举办活动
  • 企业转让无形资产要交增值税吗
  • 经营性租入的设备是资产吗
  • 企业所得税零申报资产总额怎么填
  • 生产成本属于什么会计要素
  • 预提费用怎么理解
  • 员工休产假期间公司发工资吗
  • 医疗服务免税发票怎么开
  • 党员经费的使用范围
  • 个人捐赠住房
  • 可转换公司债券账务处理
  • 对公账户转钱出来
  • 劳务派遣公司差额征税怎么申报
  • 税收返还的账务处理
  • 不发工资先去劳动局投诉还是仲裁
  • infotainment.exe
  • mcrlnstaller
  • thinkphp钩子场景
  • 项目融资中风险有哪些
  • 如何计算企业年度人均产值
  • yolov3 改进
  • php面向对象的三大特性
  • 什么是市盈率和市净率,谈谈你对两个指标的理解
  • 铡刀演示
  • 2023年最全盘点 | 16款跨平台应用程序开发框架
  • 发票过期未认证可以用吗
  • 小型微利企业如何进行税收筹划
  • 公司抵押贷款的钱,可以转到私人账号
  • 发票认证系统叫什么名字
  • 在mysql中创建数据库和表作业
  • 终止经营列报的相关表述
  • 权益法和成本法的适用范围
  • 费用计入什么表
  • 无形资产的摊销年限及摊销方法
  • 地税发票丢失怎么办?
  • 固定资产没有折旧完要转走会计科目
  • 收到保险公司的发票怎么做账
  • 个人收到国外汇款后怎么办
  • 应付账款是赊销方式吗
  • 专票取消认证
  • 明细账的建账
  • 清除sql表内容
  • win8怎么运行
  • linux三个主要部分及功能
  • win2003 enterprise序列号
  • 如何设置linux
  • win7右键管理工具
  • winhlp32.exe - winhlp32是什么进程
  • 软件无法卸载怎么办,安装的软件卸载不了怎么办
  • Ubuntu 15.04系统怎么清理的系统垃圾文件?
  • linux 文件查看
  • 禁用强制驱动程序签名有什么用
  • bat for do
  • cocos2dx-js
  • Python生成随机数
  • Node.js中的全局对象有
  • 磁盘监视器在哪
  • unity 优化
  • 对应用进行单元测试的是
  • js获取当前点击事件的节点
  • js中unbind
  • 安卓两页合并到下一页
  • android原生框架
  • 房产营业税满2年怎么算
  • 天津户籍信息查询
  • 亮点纷呈的意思和造句
  • 逆光代售和神仙代售那个好一点
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设