位置: 编程技术 - 正文

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

  • 递延所得税负债转回怎么理解
  • 开农贸市场挣钱吗
  • 住宿费抵扣进项税怎么报税
  • 企业土地使用税征收标准
  • 托收承付和委托收款的含义和相同之处
  • 金税四期对增值税发票的比对
  • 个体工商户经营范围查询
  • 营改增后怎么计算税费
  • 个税手续费返还计入哪个科目
  • 资本化的借款利息支出计入什么科目
  • 销售自己使用过的固定资产如何开票
  • 处置车辆收入缴税规定
  • 当期未开票过收入,以后开票怎么做会计分录
  • 研发部门领用材料会计分录
  • 企业增值税留抵退税新闻稿范文
  • 企业对外投资需要注意的事项
  • 电子发票详见清单怎么开
  • 农村合作社开具的专用发票免税吗
  • 缺联发票税务怎么处理
  • 药企常见税务风险及措施
  • 合同无效后还能主张违约责任吗
  • 清包工和甲供工区别在哪
  • 以前年度未分配利润属于什么科目
  • 安装服务需要预缴税款吗
  • 一键ghost软件怎么用
  • php抽象类使用场景
  • 保险多扣一个月
  • KbdTray.exe - KbdTray是什么进程 有什么作用
  • vue3的生命周期
  • 企业之间拆借资金
  • laravel dump
  • 加利福尼亚湾在哪
  • 申请代开增值税专用发票有金额限制吗
  • php如何做app
  • 在建工程的核算内容制度依据
  • springboot和vue结合
  • 本月损益类未结转为零的一级科目
  • sta翻译中文
  • php post数据
  • 处置车辆收入缴税规定
  • 工程没结算能否竣工验收
  • 软件开发属于技术合同吗
  • 原始凭证一般没有
  • mysql的存储
  • 待抵扣进项税额是什么情况下用的
  • 企业开具劳务费发票怎么开,税率多少
  • 进项税需要转出的分录
  • 微信钱是不是现金
  • 合并资产负债表与母公司资产负债表要看那一个好
  • 受疫情影响较大的上市公司
  • 厂房出租租金收税吗
  • 出口退税免抵退税额要交城建税吗
  • 融资租赁收到的租金计入什么科目
  • 应收账款和应付账款属于什么科目
  • 发票勾选认证的时间限制是多久
  • 如何合理的运用网络
  • 应付账款暂估会计分录怎么写
  • 有存货的公司
  • sqlserver 索引
  • Linux服务器中MySQL远程连接的开启方法
  • windows server 2016 百度网盘下载
  • 电脑系统停用
  • 如何设置鼠标移入并停止时触发接口
  • 用U盘安装系统重启后进不去
  • win7资源管理器停止工作怎么办
  • linux网络设置在哪里
  • Win10预览版更新弹窗如何关闭
  • 围绕摄像机旋转怎么设置
  • cocos2d怎么用
  • gpu缩放在哪里打开
  • js 获取ua
  • python中列表删除
  • jquery的插件
  • flask开发实例
  • javascript有哪些
  • 事件绑定js
  • Unity3D游戏开发标准教程
  • 基于python的系统
  • jquery iframe
  • python字典键值对个数
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设