位置: 编程技术 - 正文

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角色换装)

  • 个人所得税汇算清缴截止日期
  • 注册资本没有到位可以注销吗
  • 固定资产的更新改造支出计入什么科目
  • 资质费用是什么意思
  • 自然人城建税减半征收
  • pos机手续费开什么发票啊
  • 股份公司要实缴
  • 盘盈固定资产属于企业的会计差错
  • 个人平均缴费基数
  • 往来账审计存在问题及建议
  • 进项税额大于销项税额需要结转吗
  • 货物抵款协议书
  • 个人工资怎么缴纳个人所得税
  • 自产的不同产品有哪些
  • 2016年营改增后18个税种,第一大税种是()
  • 应交税金属于什么会计分录
  • 未付款怎么说
  • 职工伙食团食谱
  • 厂房租赁税率是房东交的吗
  • 为什么有些单位一直在招聘
  • 定额发票报销需要明细吗
  • 股东借款可以转为认缴出资
  • 小规模未开票收入如何申报增值税
  • 两年前少缴的税款是否应补缴?
  • 政府补助的会计核算
  • 企业的业务招待费多了好还是少了好
  • 对方转出没收到怎么办
  • 个人所得税由公司承担的账务处理
  • 免税收入和不征税收入有哪些?怎么记忆
  • 设备的折旧率是什么意思
  • 运输服务费和运输费分别计入什么科目
  • 银行存款日记账怎么记账
  • 境外所得税抵免汇率
  • 应交增值税专栏下的增值税项目有哪些?
  • 其他应收和其他应付可以共用吗
  • 深度学习——VGG16模型详解
  • 附有销售退回条款的销售中,每一资产负债表日
  • 外币交易是什么意思
  • php中类静态成员描述不正确的是
  • c++好学
  • 企业汇算清缴后发现有多计提的成本
  • uni-app原理
  • 办公室装修款怎么做账
  • 如何快速上手看门狗2
  • ChatGPT 的 10 种集成模式:从开源 AI 体验平台 ClickPrompt 中受到的启发
  • php如何实现多进程
  • php sha1加密 解密
  • 公司搞研发是什么意思
  • 印花税计税基础含增值税
  • js array
  • 请培训老师的费用怎么处理
  • 盈余公积的提取条件
  • mysql重置
  • 资产总额的季度平均值
  • 无票收入小规模怎么做账,要交税吗?
  • 发票作废该如何操作
  • 冲销暂估入账用什么凭证
  • 供应商折扣一次多少
  • 支付银行贷款利息的会计处理
  • 开发票货款未公对公转如何做账?
  • 设计费要计入固定成本吗
  • 单利率和复利率公式
  • 企业注销后账目如何处理
  • 利润分配未分配利润怎么结转
  • 收到的专票必须当月认证吗
  • linux系统中可用于添加用户账号
  • win8 preview
  • linux安装sshd服务
  • win8小键盘怎么打开
  • linux crontab用法
  • win10语音控制电脑
  • css控制图片置灰
  • angular中ui calendar的一些使用心得(推荐)
  • javascript table
  • Ubuntu、Linux Mint一键安装Chrome浏览器的Shell脚本分享
  • python写一个复制文件的程序
  • js设计模式有什么用
  • jquery遍历radio并选中
  • 进项发票认证了怎么冲红
  • 土地增值税的房屋转让指出售 赠与
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设