位置: 编程技术 - 正文

unity3d在线更新资源(4)(unity 更新)

编辑:rootadmin

推荐整理分享unity3d在线更新资源(4)(unity 更新),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unity 更新,unity3d怎么更新,如何更新unity hub,unity3d怎么更新,unity3d怎么更新,unity3d怎么更新,unity更新下载文件,unity3d怎么更新,内容如对您有帮助,希望把文章链接给更多的朋友!

unity3d在线更新资源(4)(unity 更新)

经过一天的尝试,终于确认方案可行,主要代码如下:

using UnityEngine;using System.IO;using System.Threading;using SevenZip;using Awesome.Net.Compression;using System.Collections;using System.Collections.Generic;public class VersionCheckControl:MonoBehaviour{ ProgressBar bar; string[] path; string dic; UILabel progress; UILabel checkVersionLabel; Dictionary<string, bool> compressDic = new Dictionary<string, bool>(); void Awake() { bar = transform.Find ("Progress2").GetComponent<ProgressBar> (); progress = bar.transform.Find ("Label").GetComponent<UILabel> (); UILabel label = bar.transform.Find ("Tip").GetComponent<UILabel> (); label.text = Localization.Get (""); checkVersionLabel = transform.Find ("CheckVersionLabel").GetComponent<UILabel> (); checkVersionLabel.text = Localization.Get (""); bar.gameObject.SetActive (false); } void Start() { StartCoroutine (downLoadVersionFile ()); } string serverVersion; string localPath; string assetVersionStr; string localAssetPath; List<string> needDownList = new List<string>(); IEnumerator downLoadVersionFile() { WWW versionWWW = new WWW (PlatformConfig.ServerVersionPath() &#; "Version"); yield return versionWWW; if(versionWWW.error != null) { Debug.Log(versionWWW.error); checkVersionLabel.text = Localization.Get (""); } else { serverVersion = StringUtil.removeHuiChe(versionWWW.text); localPath = Application.persistentDataPath &#; "/Version"; if(File.Exists(localPath)) { string localVersion = File.ReadAllText(localPath); if(localVersion == serverVersion) { checkVersionLabel.gameObject.SetActive(false); startConnect(); } else { StartCoroutine(DownLoadAssetVersionFile()); } } else { StartCoroutine(DownLoadAssetVersionFile()); } } } IEnumerator DownLoadAssetVersionFile() { WWW assetVersion = new WWW(PlatformConfig.ServerVersionPath() &#; "AssetVersion"); yield return assetVersion; if(assetVersion.error != null) { File.WriteAllText(localPath, serverVersion); checkVersionLabel.gameObject.SetActive(false); startConnect(); } else { assetVersionStr = StringUtil.removeHuiChe(assetVersion.text); localAssetPath = Application.persistentDataPath &#; "/AssetVersion"; Dictionary<string, int> localAsset = new Dictionary<string, int>(); if(File.Exists(localAssetPath)) { string localAssetStr = File.ReadAllText(localAssetPath); string[] localAssetArr = localAssetStr.Split('|'); for(int i = 0; i < localAssetArr.Length; i&#;&#;) { string[] arr = localAssetArr[i].Split('-'); localAsset.Add(arr[0], int.Parse(arr[1])); } } string[] serverAssetArr = assetVersionStr.Split('|'); for(int i = 0; i < serverAssetArr.Length; i&#;&#;) { string[] arr = serverAssetArr[i].Split('-'); string key = arr[0]; int serverAssetVersion = int.Parse(arr[1]); if(!localAsset.ContainsKey(key) || localAsset[key] < serverAssetVersion) { needDownList.Add(key); } } StartCoroutine(DownLoadBundleFile()); } } WWW bundle; int index = 0; bool isAllDone = false; IEnumerator DownLoadBundleFile() { checkVersionLabel.gameObject.SetActive (false); if(needDownList.Count <= 0) { File.WriteAllText(localPath, serverVersion); startConnect(); } else { bar.gameObject.SetActive(true); for(int i = 0; i < needDownList.Count; i&#;&#;) { bundle = new WWW(PlatformConfig.ServerVersionPath() &#; needDownList[i] &#; ".assetBundle"); yield return bundle; if(bundle.error != null) { Debug.Log(bundle.error); } else { File.WriteAllBytes(PlatformConfig.PathOfArchive() &#; needDownList[i] &#; ".assetBundle", bundle.bytes); } index&#;&#;; } File.WriteAllText(localAssetPath, assetVersionStr); File.WriteAllText(localPath, serverVersion); isAllDone = true; } } void Update() { if(bar.gameObject.activeSelf) { bar.setValue (bundle.progress / needDownList.Count &#; index / needDownList.Count, true); progress.text = Mathf.CeilToInt(bar.getValue() * ).ToString() &#; "%"; if(isAllDone && bar.getValue() >= 1f) { startConnect(); isAllDone = false; } } } void startConnect() { bar.gameObject.SetActive (false); ResManager.getInst ().preLoadBundle (); LoginAction action = GetComponent<LoginAction>(); action.startConnect(); } }整体思路还是很简单的,就是先把流程走通。我也觉得目前的方案应该是最好的选择。

[置顶] Unity3D中自带事件函数的执行顺序 在Unity3D脚本中,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行。其执行顺序如下:编辑器(Editor)Reset:Reset函数被调用来初始化脚本

Unity3d中调用webservice方法 在此之前非常感谢一位博客主的博客,是这位仁兄帮我找到了思路:

u3d在线更新资源方案 现附上雨松大神的文章:

标签: unity 更新

本文链接地址:https://www.jiuchutong.com/biancheng/378735.html 转载请保留说明!

上一篇:Unity3d MonoDevelop格式化代码

下一篇:[置顶] Unity3D中自带事件函数的执行顺序([置顶]电影名字《收件人不详》)

  • 税控盘减免税款月末如何结转
  • 增值税发票丢失最新处理办法
  • 实收资本印花税是营业账簿吗
  • 车辆使用费属于什么税收分类
  • 地产企业预缴增值税政策
  • 实收资本在报表中怎么看
  • 药品费用开具增值税发票项目应为什么
  • 个人销售商品交什么税
  • 金税盘税务申报
  • 资金账簿减半征收印花税财税2018 50号
  • 金蝶系统如何设置套打
  • 计提坏账准备需要纳税调增吗
  • 单位买绿植可以报销吗
  • 赞助支出为什么不算广告费
  • 代扣代缴个人所得税手续费是否缴纳增值税
  • 企业购买用于绿化的土地
  • 库存材料盘亏会计分录
  • 施工单位的项目
  • 房地产企业的非流动资产周转率在多少以上
  • 赠票视同销售,借方计入什么科目?
  • 合伙企业个人所得税计算案例
  • 发票已开货没发出的账务处理?
  • c盘满了清理什么
  • linux aws是什么
  • 费用发票可以不上账吗
  • 软件研发公司有哪些岗位
  • 音量图标不显示怎么回事
  • win10如何关闭更新并关机
  • 印花税计提与缴税的区别
  • PHP:http_build_query()的用法_url函数
  • php对接微信支付教程
  • 个人借款的合法利息是多少
  • 个体工商户加盟咖啡店
  • 企业发放年终奖政府有哪些规定?
  • php网站实例
  • 拉帕努伊国家公园
  • python抓取淘宝店铺商品
  • vue项目如何启动运行
  • 值得深思的短句
  • 注意力机制有什么作用
  • php原生导出excel表单元格格式
  • 税前弥补以前年度亏损
  • mysql存储引擎是什么意思
  • 资产减值损失属于营业外支出吗
  • c语言realloc函数的用法
  • 借款合同 印花
  • 财务费用在贷方,怎么结转到本年利润?
  • sql有什么
  • mysql版本5.5.x升级到5.6.x步骤分享
  • 装修及室内设计学什么
  • 税金及附加如何预测
  • 个税返还手续费怎么做账
  • 发票拍照打印出来可以报销吗法律
  • 资产减值损失科目借方增加还是减少
  • 福利费需要通过应付职工薪酬吗
  • 有限合伙企业的税收筹划
  • 债务重组的账务处理和税收差异
  • 预付款已经开了发票未到货要怎么做账
  • 单位给个人转款怎么做账
  • 公司基本户可以取现金吗
  • 小微企业免征增值税优惠
  • sqlserver重命名表名
  • windowsxp关闭窗口操作方法有哪些
  • linux如何用
  • 怎么把操作系统转移到另一个盘
  • mac电池不能被识别吗
  • Linux>=2.6.39 Mempodipper本地提权分析和EXP利用(CVE-2012-0056)
  • linux如何安装wget命令
  • win7总是显示正在连接虚拟磁盘服务怎么办
  • [置顶] 此外,车牌号:458143(懂得都懂[吃瓜])
  • 学javascript有前途吗
  • shell命令tee
  • dos命令怎么输入命令
  • 基于贪心算法
  • jquery地址
  • unity androidx
  • python打印出none
  • js怎么定义类
  • 江苏差旅费报销管理规定2021
  • 德国对外投资法律劣势有哪些方面
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设