位置: 编程技术 - 正文

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

  • 增值税普通发票需要交税吗
  • 印花税的征税对象是条例列举的凭证未列举的不征税
  • 动迁补偿款怎么算
  • 生产成本和营业成本的关系
  • 招标押金如何做账务处理?
  • 普通电子发票如何冲红
  • 电子税务局税种认定在哪里看
  • 什么时候确认应收股利
  • 介质申报和网络申报的区别
  • 施工企业所得税税率是多少
  • 营改增之后账务怎么处理
  • 工会经费按什么计算的
  • 低值易耗品怎么报废
  • 印花税已经缴纳了但是还未申报
  • 发票上的税额和报税的数不一样,按照哪个报
  • 补记以前年度往来款
  • 应收未收的利息如何处理
  • 递延收益的所得税影响
  • 所得税不能税前扣除项目
  • 期末未分配利润大于期初未分配利润+期末净利润
  • 企业所得税佣金扣除规定
  • 绩效奖金是否属于工资判决书
  • 金税盘服务费计入什么会计科目
  • 职业病治疗费用由谁来承担
  • tracert命令的作用及用法
  • 招待费的范畴
  • 汽车报废残值收入怎么做账
  • php设置中文编码
  • 物资销售经营范围
  • 没结婚生了小孩分手了怎么办?
  • 调整以前年度少计提的工资
  • php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
  • vuecli3创建项目的过程
  • 登录页面的实现方式
  • Web Spider Fiddler - JS Hook 基本使用
  • python创建自定义函数
  • sass和less的区别使用
  • cp命令复制系统文件/etc/profile
  • 基建拨款会计分录
  • 小微企业免征增值税报表填写
  • phpcms模板制作教程
  • 不抵扣的发票需要认证吗
  • 补发工资个人所得税税
  • sqlserver2008还原数据库 错误3624
  • db management
  • python的np.array
  • 防暑降温用品进口品牌
  • 结转以后年度扣除的费用有哪些
  • 平均股东权益在哪里看
  • Mysql获取当前年份
  • 军工科研事业单位会计制度
  • 文化事业建设费2023年是否减免了
  • 农产品税率2020年计算
  • 运输企业税负率一般控制在多少?
  • 发票上有银行流水号吗
  • 水利工程施工税率是多少
  • 房地产开发企业与转让房地产有关的税金
  • 长期借款的账务处理会计分录
  • 管理不善存货盘亏计入什么科目
  • 某劳务派遣公司与某传媒公司签订
  • windows server 202
  • bios开机密码怎么关闭
  • xp ie浏览器无法显示网页
  • ubuntu 系统卡住
  • debian7安装教程
  • win10 mobile下载
  • window 查看端口
  • 如何查看windows8.1版本
  • win7虚拟内存最大设置多少
  • 惠普笔记本的BIOS键
  • linux安装pip2
  • linux 使用
  • vs2013怎么配置环境
  • excel的窗口包含什么
  • cocos2dx3.0的label字体去描边
  • css+div布局的常用方法
  • js定义json对象
  • 下载随手笔记
  • jqgrid loadcomplete
  • 浙江国税局电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设