位置: 编程技术 - 正文

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中自带事件函数的执行顺序([置顶]电影名字《收件人不详》)

  • 纳税人资格类型有哪些
  • 应纳税暂时性差异是调增还是调减
  • 关于美容院的会计如何做账
  • 小规模纳税人哪些发票可以抵税
  • 营业外支出影响损益吗
  • 小规模个体户营业执照一共几个章
  • 自然人独资企业是什么意思
  • 什么样的情况可以补缴社保
  • 销售费用的进项税额转出会计分录
  • 收到别人的承兑怎么入账
  • 投资可赎回基金怎么入账?
  • 无偿赠送材料的会计处理
  • 佣金可以直接转到个人账户吗
  • 原材料投资入股协议约定价值公允价值
  • 营改增前的工程款现在怎么开票
  • 没有成立工会的企业怎么做账
  • 6位开票代码是几位数
  • 高新企业财务做账要求
  • 服装外贸进出口
  • 绿植租赁公司都适合什么名字
  • 购买固定资产的税率是多少
  • 公司聚餐计入福利费还是招待费
  • 个人缴付的年金是什么
  • 增值税小规模纳税人优惠政策
  • win7系统内存不足怎么解决
  • win10网络带宽
  • win11可以触屏吗
  • 委托贷款会计科目有哪些
  • PHP:pg_lo_import()的用法_PostgreSQL函数
  • 销售商品取得的货款
  • 会计分录的方法与步骤
  • echarts右侧y轴
  • 对外支付代扣代缴附加税享受减免吗
  • ValueError: The device should not be ‘gpu‘, since PaddlePaddle is not compiled with CUDA问题解决(Paddle)
  • webpack常用属性
  • 国内旅客运输服务发票
  • 基于个人同意处理个人信息的个人什么撤回其同意
  • 网络请求失败什么意思
  • word2vec使用方法
  • 普通动产和特殊动产如何分类
  • 如何查询上年企业所得税
  • java的范式
  • 商业承兑汇票退回给上手公司怎么操作
  • 企业自产自用的产品需要缴纳增值税吗
  • 个人独资企业所得税申报流程
  • mysql数据库sid
  • 开发票给别人该如何收取税点?
  • 出口收汇核销单是什么意思
  • 存货呆滞的原因及处理表格
  • 发票额开多了多出的金额怎么处理?
  • 收到上年度所得税返还会计分录
  • 应收账款项目期末余额怎么计算
  • 股东在注册资本金范围内承担责任
  • 货款扣除质量赔款
  • 外经证的办理流程
  • 鉴证咨询服务费可以抵扣吗
  • 已开具发票验旧
  • 现金折扣定价案例
  • 企业短期借款可以是个人吗
  • 日记账的标准格式是
  • mysql中key 、primary key 、unique key 与index区别
  • 双击盘符弹出属性
  • 如何关掉数据
  • centos文件备份
  • 如何让电脑启动更快
  • ftp自动上传文件到服务器
  • script_tool_for_windows.bat Windows 环境下的 hosts 一键部署脚本
  • 2015-04-04---CCAction详解(欠了大家好几天了)
  • javascript中怎么创建一个数组
  • js标志
  • js实现的简洁二次函数
  • JavaScript电子时钟倒计时第二款
  • 安卓刷屏神器
  • 美国对中国纺织服装关税
  • 国家税务四川税务总局APP
  • 注册资金实缴证明怎么出
  • 消费税是含税价
  • 新疆自治区国税局郑志全
  • 2021西安雁塔区第一幼儿园运动会
  • 准生证网上查询码是个什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设