位置: 编程技术 - 正文

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

  • 税控盘抄报逾期怎么办
  • 增值税电子专用发票需要盖章吗
  • 土地摊销账务处理
  • 税控盘开票机号是哪个
  • 工程服务增值税税率1%
  • 一般纳税人收入会计分录
  • 免费赠送货物出租合同
  • 个人取得什么收入不交税
  • 企业所得税的利润总额是利润表中的哪个数
  • 企业清理固定资产所得税汇算是需要调整吗
  • 应收帐款备抵法
  • 承包租赁成本明细表的预算项目
  • 进项税额转出会影响利润吗
  • 普票红冲部分金额的发票怎么开
  • 收派服务发票需交税吗
  • 快速查看财务费用借贷有误的方法
  • 低于成本价销售的税务风险
  • 未担保余值是什么意思
  • 二手房个人所得税和增值税
  • 本月不抵扣的发票不入帐吗
  • 期间费用的研究费用填什么
  • 税务部门实名认证
  • 销售商品包安装如何确认收入
  • 增值税认证平台确认以后还可以再认证吗
  • 存在弃置费用的固定资产,如果履行弃置义务
  • 业务招待住宿费发票可以抵扣进项税吗
  • Windows11怎么免费升级专业版
  • win10打开游戏老是提示
  • 小规模季度不超过30万的账务处理
  • 如何解决win7系统卡顿
  • macbook隐藏
  • PHP:Memcached::getStats()的用法_Memcached类
  • 企业清算所得税申报
  • 顺流交易合并抵消 chenyiwei
  • 有没有不需要网络的摄像头
  • 产品成本核算应正确划分哪些方面的费用界限
  • 房地产企业项目开发法律风险
  • 在树洞中休息的英语
  • 伯里圣埃德蒙兹的人口
  • 交通费补贴与报销的区别
  • 公司注册资金多长时间可提出来
  • 暂估入库少了
  • 中药和中药饮片有区别吗
  • 资产负债表坏账准备计入哪里科目
  • 企业所得税中通过研发费用辅助账
  • 高速公路费如何开票
  • 内部应收账款计提坏账准备的抵消例题
  • 货物逾期保管费怎么算
  • 以前年度长期股权投资漏记调整
  • 所有者权益的概念和特征
  • SQL server不存在或拒绝访问 u8
  • win2003peiso
  • ubuntu怎么用
  • linux命令rz -y
  • 证书登录什么意思
  • windows7怎么添加设备
  • 视频对比度饱和度亮度最佳值
  • win10raw预览
  • win10怎么检查
  • win8一直在开始界面
  • win1021年更新
  • onekey.exe是什么
  • win8屏幕分辨率显示不全
  • 怎么解圧
  • win8桌面不显示
  • linux查看使用率命令
  • win10mobile官网
  • linux配置ssh服务器 用户名
  • cocos2dx环境搭建
  • android读写sd卡权限
  • vue.js打包部署
  • angularjs删除数组元素
  • shell脚本识别十六进制数
  • jQuery简单实现title提示效果示例
  • 大连税务登记app
  • 政府无偿划拨土地涉及的税费
  • 企业所得税季度申报时间
  • 货物税费
  • 劳动仲裁受理通知
  • 天津市东丽区军粮城派出所电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设