位置: 编程技术 - 正文

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

  • 商业承兑汇票未到期贴现
  • 工程款给付协议
  • 没有发票可以先报销吗
  • 固定资产新规则
  • 小规模纳税人税率有几种
  • 招标代理服务费由谁支付
  • 做实验用的东西哪里可以买到
  • 减半征收的印花税缴纳所得税吗
  • 小规模出口企业增值税申报
  • 赔付伤残费用还有误工费用么
  • 其他资本公积属于
  • 劳务报酬所得是什么
  • 冲预付账款预算会计怎么做分录
  • 出售房屋缴纳的印花税
  • 流动资产周转次数低说明什么
  • 别人帮开票钱要打给别人账户吗
  • 财政授权支付凭证后多久打款
  • 个人怎么开增值税
  • 电子营业执照可以开通抖音小店吗
  • 银行手续费可以抵扣企业所得税吗
  • 手工发票有效期多久
  • 2套账如何整合为一套账
  • 企业支付短期借款利息1000元
  • 根据规定签发汇票凭证必须记载的事项有
  • 有哪些固定资产可以抵税
  • 车间办公费计入什么会计科目
  • 公司生产的产品
  • 招待费如何列支
  • linux怎么更改账户名
  • 房地产企业按揭款到账后增值税
  • 股权转让有哪些股
  • 以下哪些企业需要填报
  • msmpeng.exe 是什么
  • php动态网站开发项目教程
  • 员工离职后公司还用照片
  • 哪种审计证据可以查出来
  • 进口增值税采集
  • 微信小程序网页版
  • vue自学
  • css设置背景图片填充
  • 什么是增值税举个例子
  • 增值税的滞纳金税率
  • 公允价值变动收益是指什么
  • 帝国cms怎么调用文章随机段落
  • 外包员工食堂怎么做账
  • phpcms建站教程
  • 代销费是谁给谁
  • win7系统安装教程不用u盘
  • 税控盘是什么会计科目
  • 托收承付和委托收款纳税义务发生时间
  • 增值税普通发票需要交税吗
  • 工资算营业成本还是管理费用
  • 固定资产原价怎么计算
  • 公司前期装修费属于开办费吗
  • 人工费用和管理费用比例
  • 当月发票未作废
  • 会计科目的设置原则包括( )
  • sql server使用sql语句
  • VMWare linux mysql 5.7.13安装配置教程
  • dhcp client服务无法启动1083
  • ubuntu ifdown
  • mac如何设置默认打开程序
  • 配置结果
  • QQPCTray.exe是什么进程 QQPCTray.exe文件介绍
  • 电脑无法检测到麦克风怎么办
  • win8电脑触摸屏没反应怎么办
  • 为什么没有win8系统
  • javascript基础教程教材答案
  • Android Chronometer(定时器)
  • 使用androidx 找不到v7
  • 搭建nodejs
  • linux7 snmp
  • js处理跨域方式及原理
  • 税务稽查时间最长多久?
  • 福建2021年水利水电招聘
  • 单位购买房产作废怎么办
  • 小规模一季度多少免增值税
  • 税务更名需要什么材料
  • 主管税务机关指的是
  • 税收与税务的区别是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设