位置: 编程技术 - 正文

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

  • 增值税加计扣除怎么做账
  • 金税四期对纳税的影响
  • 公司收入是否应优先支付工资
  • 个人买私募基金还是买公募基金好
  • 挂账留底税额如何抵扣?
  • 政府发的补助金用不用交税
  • 分配辅助生产车间成本记账凭证
  • 不是公司车可以报销油费吗
  • 银行客户专用回单分录
  • 当期免抵税额和当期免抵退税额
  • 代扣工资申请怎么写
  • 企业增值税税负率与利润率的关系
  • 一般贸易免抵退税计算
  • 增值普通发票税率怎么算
  • 个税申报需要补税是什么情况
  • 利息收入记账凭证格式范本
  • 银行存款明细账怎么登记及范本
  • 公司代缴个人社保费怎么做账
  • 电脑上不了网怎么安装网卡驱动
  • 结转已经销售商品成本的分录
  • 代开的发票没有人名行不行?
  • Win10 21H1 Build 19043.1200(KB5005101)预览版更新了哪些内容(附更新日志)
  • 企业所得税预缴税率是多少
  • windows7增加桌面
  • vue的安装命令
  • 纳税人转登记期限
  • 如何做架构规划图
  • trace 命令用法
  • 工资与劳务报酬是否合并缴纳个税
  • 进销存使用视频
  • 有形动产租赁属于现代服务业吗
  • 计提工会经费是什么工资项目
  • 哪些固定资产是按8年折旧的
  • 预计净残值影响营业利润吗
  • 简述sql server 2008的新增功能
  • 帐务处理是指什么工作
  • 进项税额转出期限是多久
  • 开发成本的会计科目编码
  • 开户套餐费是什么意思
  • 装修公司预收款要交增值税吗
  • 商业会计和财务会计
  • 土地出让金进项税怎么算
  • 开出银行转账支票
  • 闲置资产计提折旧
  • 现金流量表的编制基础是权责发生制
  • 未达起征点可以申请一次性创业补贴吗
  • 贸易融资具体包括
  • 增值税稽查补交税会计处理
  • SQL Server Bulk Insert 只需要部分字段时的方法
  • linux中进程在运行时的基本状态
  • 2019谷歌浏览器
  • windows8.1备份
  • 怎么把硬盘安装到电脑上
  • Win10开机提示黑屏字母
  • 安装完xp系统直接黑屏怎么办
  • win7无法打开windows功能
  • win7桌面壁纸自动更换关闭
  • 使用灭火器人要站在上风口还是下风口
  • win8.1system磁盘占用率高
  • win8.1系统更新
  • 微软kudo
  • 作战仿真理论与技术
  • 哪些游戏是c#开发的
  • jQuery插件实现静态HTML验证码校验
  • Linux中获取某个进程的系统调用以及参数(故障排查案例)
  • putty自动登录脚本
  • jQuery+JSON实现AJAX二级联动实例分析
  • net命令大全
  • JavaScript中字符串模板
  • 获取某个div的高度
  • 传智播客在线课程
  • unity中sendmessage
  • python的params
  • jquery移动端ui框架
  • 如何查询汽车发票
  • 税务工作意见和建议
  • 百望电子发票查询下载
  • 青海国税局官网
  • 苏州吴江区事业单位2023成绩公布
  • 公司以融资租赁形式从事非法放贷业务,,能否让法院判
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设