位置: 编程技术 - 正文

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

  • 银行开具的票据怎么查询
  • 月初没报完税可以开票吗
  • 工会刻章费用计入什么支出
  • 销项负数发票怎么做账
  • 缴纳的增值税比账面的少怎么做账
  • 测绘费发票需要备注么
  • 交通补贴税前扣除标准
  • 应付职工薪酬期末余额怎么算
  • 农产品加工需要交税吗
  • 有形动产租赁服务计入什么科目
  • 公司股东投资是负债吗
  • 应收账款平均余额公式
  • 房地产企业汇算清缴报表
  • 增值税红字发票怎么做账
  • 退休人员取得单位证明
  • 产值指的是财务报表哪个数值
  • 应交增值税怎么做账务处理
  • 土地增值税计算公式及举例
  • 物业公司水费差额征税不备案
  • 个税按工资薪金未按时申报的处罚规定
  • 自然人是否适用财政部税务总局2022年第15号公告
  • 物流公司怎么进去工作的
  • linux的rz
  • 抵押房产可以买卖吗
  • 卖固定资产如何申报
  • 代销返利业务会计处理
  • php抽奖算法程序怎么写
  • 佣金代扣代缴增值税需要缴纳附加税吗
  • kb4586853更新
  • php字符串定义的三种方式
  • 车间闲置固定资产怎么算
  • 薏米红豆粥的做法视频
  • 材料暂估入账
  • 购货方开具红字发票怎么做账
  • php获取数据
  • Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
  • php模板引擎原理
  • php+mongodb
  • error出错
  • Delete `␍` 最简单最有效的解决方法和解释(VScode)
  • 前端必学课程
  • yii2框架和fastadmin建商城网站哪个好用
  • php公众号开发框架
  • 其他应收款包括应收利息吗
  • 试运行收入会计分录
  • 代理付银行手续费合法吗
  • mysql服务开不起来
  • logstash gsub
  • 原始凭证可以直接粘在记账凭证后吗
  • 个人所得税工资薪金包括哪些内容
  • sql存储过程详解图
  • mysql的启动方法(windows 平台)
  • 防伪税控技术
  • 应收账款在贷方为负数表示什么
  • 固定资产的核算内容包括
  • 高新企业税收减免多少
  • 外贸企业的汇率怎么算
  • 收到厂家返利账务处理
  • 行政单位收到银行存款利息的会计分录
  • 报销程序是什么
  • 买断式回购交易情况
  • 怎么提高sql语句
  • linux lv扩容
  • 重装系统要注意哪些
  • windows xp怎样禁止弹出广告
  • dreamweaver是干嘛的
  • Mac怎么查看WiFi使用量
  • linux怎么开启root权限
  • Android游戏开发教程
  • Androidannotation使用之@Rest与服务器交互的JSON数据转换(二)
  • 浅谈python
  • 九九乘法表报
  • javascript基础编程
  • jQuery ajax应用总结
  • 柴油计入什么科目
  • 开采砂石
  • 建筑服务纳税人有哪些
  • 税务安装软件
  • 个人所得税app密码给别人有风险吗
  • 增值税与个人的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设