位置: 编程技术 - 正文

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

  • 个体摊贩
  • 代缴税费
  • 增值税发票查询网络异常
  • 少数股东损益是
  • 一张报关单可以分两次退税吗
  • 全额计提坏账准备后,多久核销应收账款
  • 坏账计提坏账准备
  • 税法关于发票丢失的
  • 上级拨付的固定资产增加类型是什么
  • 内含增长率的推导
  • 买烟酒开专票可以抵税吗
  • 销售货物运费的增值税率
  • 专家评审费需要多少钱
  • 企业所得税零申报资产总额怎么填
  • 发出商品确认收入的条件
  • 控股公司如何抵押股权
  • 跨区经营的税务政策
  • 建设工程是否可以约定非工程所在地仲裁委仲裁
  • 财产转让所得个人所得税纳税地点
  • 取得运输单位开具的普通发票
  • 去年亏损今年第一季度盈利
  • 财产租赁所得的税率是多少
  • 季度预缴所得税可以弥补以前亏损吗
  • 销项税和进项税怎么区分
  • php7.3
  • .inc是什么文件
  • 普通发票主营业务收入销项负数发票怎么做账
  • 供热企业收取采暖费标准
  • 编写二叉树
  • 计算企业应纳税所得额时,可以扣除的税种
  • 劳务报酬所得缴纳税款是公司代缴吗
  • php传值给js
  • 快速查找附近的人
  • 企业缴纳残保金规定
  • fall 瀑布
  • 写一个php访问数据库并读取数据的脚本
  • SpringBoot+Vue实现在线商城系统
  • apache trace
  • 盘点时发现存货怎么处理
  • 持有期间公允价值变动的科目归属
  • 个体户发票没有开户行和账号行吗
  • 收到投资款怎么做账
  • 增值税普通发票可以抵扣吗
  • 小企业投资款怎么做账
  • 电子承兑操作
  • mongodb常用命令
  • 应收帐款质保金
  • 使用sql server查询不到会返回什么
  • 培训机构财务怎么做账
  • 固定资产进项留存怎么算
  • 固定成本和变动成本包括哪些
  • 公司法人往公司账户打钱怎么能换回来
  • 制造费用的结转正确的是( )
  • 材料成本差异会计处理
  • 多计的人工成本怎么做账
  • 制造费用可以计提吗
  • 车辆购置税的税目有哪些
  • 车辆报废取得的收入增值税怎么算
  • 进项税认证未抵扣怎么做账
  • 分页式存储管理代码
  • 数据库更新数据
  • os x yosemite wifi断线怎么办?yosemite wifi掉线解决详细步骤
  • iphone制造成本
  • 怎么取消桌面右下角图标隐藏
  • 怎样修改mac
  • macbookpro移到废纸篓快捷键
  • win8系统关机键找不见
  • linux就要这样学
  • domReady的实现案例
  • 基于javascript的毕业设计
  • CentOS下mysql定时备份Shell脚本分享
  • js右键菜单
  • node.js gui
  • python基础教程视频教程
  • imagelearning
  • js轮播图视频教程
  • 一般纳税人开红字发票怎么报税
  • 银行前置利息什么意思
  • 个人所得税法全文完整版2021实施细则
  • 普通发票和增值税普票有啥区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设