位置: 编程技术 - 正文

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

  • 二手房交易需缴纳的费用
  • 企业账号变更
  • 残保金计算包括五险一金吗
  • 接受劳务是进项还是销项
  • 存款利息单需要缴纳个人所得税吗
  • 小企业会计准则和企业会计准则的区别
  • 企业所得税调增项目有哪些
  • 税控盘抵减增值税需要结转吗
  • 收回赔款会计分录
  • 新公司成立前期人员配置
  • 固定基金会计分录怎么处理
  • 国税网不能打印,怎么设置
  • 营改增对小规模的影响
  • 利润表反映了哪些情况
  • 公司作账都按不含税价吗
  • 应纳个税的工资怎么计算
  • 银行手续费做账漏掉
  • 免抵退税额抵减额怎么理解
  • 企业专项储备属于什么科目
  • 分支机构能否核定企业所得税
  • 企业所得税免税政策
  • 私人打款到对公账户可以吗
  • 未开票收入计入预收账款
  • 长期股权投资核算的成本法与权益法的主要差别有哪些
  • 增值税明细账怎么登记
  • 企业注销时实收资本为0
  • 辞退补偿入账
  • 过路费进项税抵扣填在纳税申报的哪行
  • codeigniter 教程
  • 将资本公积转为实收资本什么变了
  • 预缴的附加税怎么填表抵减
  • node-
  • html+php
  • 发票开具使用要求
  • 盈余公积转增会计分录
  • 员工买材料报销分录
  • 企业从政府取得的非货币资产应该按照什么计量
  • 小规模纳税人利润超过300万
  • 房东租金收据
  • 微擎框架是开源的吗
  • 物流企业财务流程
  • 农产品增值税免税备案资料
  • 怎么在电子税务局查询进项发票
  • 拯救你的方法
  • 用jdom创建中文的xml文件的方法
  • 工程款多付了如何追回
  • 分销佣金税务账务怎么做
  • 电子银行承兑到期没有兑现怎么办
  • 应收票据到期收回的会计分录
  • 成本结转的凭证后附件是怎样的
  • 对公账户付个人工资怎么入账
  • 租房公司报销发票怎么开
  • 主营业务收入的t型账户怎么写
  • 企业初建
  • windows下mysql 5.7版本中修改编码为utf-8的方法步骤
  • windows server 2003 sp2密钥
  • win10访问局域网电脑需要用户名和密码
  • 如何找回windows删除的文件
  • centos查看某个端口
  • winxp win10哪个快
  • linux发布项目
  • media.codec是什么软件
  • win10桌面图标显示错误
  • linux系统怎么访问网页
  • win10系统更新出错怎么办
  • Linux禁止MySQL开机自启动的小技巧
  • unity and unity
  • js继承的关键字
  • js实现组件功能
  • 超酷风格
  • [置顶]bilinovel
  • jquery操作
  • Protecting Content With AssetBundle[Unity]
  • shell脚本wc
  • unity调色插件
  • 广州电子税务局财务报表在哪里查询
  • 设立新的机构或开办新的业务
  • 江西国税电子税务局
  • 个体工商户税务注销流程及需要的资料
  • 国家税务局查询发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设