位置: 编程技术 - 正文

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

  • 业务招待费福利费怎么算超支
  • 增值税纳税义务发生地点的规定
  • 收到银行承兑汇票怎么接收
  • 财务记账之后是否必须审核
  • 长期利润分享计划属于短期薪酬吗
  • 小企业会计准则2023电子版
  • 质保金扣款要进项税转出吗
  • 缴纳所得税费用的会计分录
  • 纳税人采取预收的措施
  • 自然人纳税人识别号查询
  • 其他应收款利息收入税务规定
  • 按工人工资比例结转制造费用的科目
  • 对方跨行转账成功后我却没收到款还能追回来吗
  • 核定征收企业所得税率是多少
  • 应交税费应交增值税的三级科目有哪些
  • 定额发票是啥
  • 固定资产评估增值
  • 公司不给发公司
  • 在途物资非合理损耗
  • 打印的行程单可以删除吗
  • 结转固定资产净收益8万元
  • 与建筑物有关的设计
  • 个体户能给自己交五险吗
  • 将原材料变成成品的过程
  • 预提税和企业所得税
  • 进销存账本怎么做
  • 出租设备收取租金合法吗
  • PHP:zip_entry_filesize()的用法_Zip函数
  • 成本法的优点是计算较为简便,缺点是
  • ui.exe啥意思
  • php阿里云oss
  • 耕地开垦费应计入哪个会计科目
  • 安装elementUI
  • 无形资产法
  • 中国男人百度百科
  • python 捕捉窗口
  • 增值税进项税加计抵扣
  • 供应商的质量扣款应该开什么发票
  • php call方法
  • 出口退税超期了怎么办
  • 我想问一下移动
  • 终止经营列报的相关表述
  • 发票有别的字迹有影响吗
  • 天使投资
  • mysql日期和时间类型
  • 专票丢了重开需要交钱吗
  • 将自产的应税消费品用于连续生产非应税消费品
  • 未计提完固定资产怎么办
  • 疫情期间提涨薪合适吗
  • 以前年度损益调整属于哪类科目
  • 水电费发票没有可以用其他发票抵吗
  • 销售费用的会计科目
  • 预付在建工程款的会计分录
  • 营改增后税率表
  • 员工预支工资现金流量
  • window10安装mysql5.7
  • sql将两个表的数据合并
  • haozipsvc.exe是什么
  • 一键u盘装系统软件哪个好
  • 传统与现代的结合英文
  • Win10系统开机出现问题pin码不可用
  • u盘里装pe系统
  • skyleap用不了
  • 如何快速卸载游戏
  • ct.dll
  • 提示explorer.exe
  • win10系统开机蓝屏得重启后才能开机
  • centos 7安装教程(图文详解)
  • win7无法删除d盘
  • win8自启动在哪儿设置
  • ubuntu操作
  • 粉碎文件的快捷键
  • easyui导出excel表格
  • node.js介绍
  • jquery设置cookie过期时间
  • jquery常用的5个方法
  • python环境及基础语法
  • 南京退林还耕
  • 陕西税务纳税服务平台
  • 提供劳务者受害责任纠纷赔偿案例
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设