Assets/Launch/Common/AssetVersion.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Assets/Launch/Common/DownLoadAndDiscompressTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Assets/Launch/Launch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Assets/Launch/Manager/LocalResManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Assets/Launch/Common/AssetVersion.cs
@@ -1,5 +1,6 @@ using UnityEngine; using System.IO; using System.Collections.Generic; namespace LaunchCommon { @@ -52,9 +53,8 @@ } } public bool CheckLocalFileValid() //checkList 用于外部检查文件下载后是否一致,不包含没有文件的情况 public bool CheckLocalFileValid(List<bool> checkList = null) { string path = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, m_RelativePath); var fileInfo = new FileInfo(path); @@ -66,12 +66,20 @@ } if (fileInfo.Length != size) { if (checkList != null && checkList.Count == 0) { checkList.Add(false); } Debug.LogFormat("{0}文件大小不对{1}-{2}", path, size, fileInfo.Length); return false; } var fileMD5 = FileExtersion.GetMD5HashFromFile(path); if (fileMD5 != md5) { if (checkList != null && checkList.Count == 0) { checkList.Add(false); } Debug.LogFormat("{0}文件md5不对{1}-{2}", path, md5, fileMD5); return false; } Assets/Launch/Common/DownLoadAndDiscompressTask.cs
@@ -6,6 +6,7 @@ public class DownLoadAndDiscompressTask : Singleton<DownLoadAndDiscompressTask> { public const int BYTE_PER_KILOBYTE = 1024; @@ -38,7 +39,7 @@ } } public void Prepare(List<LaunchCommon.AssetVersion> _downLoadTasks, Action _downLoadOkCallBack) public void Prepare(List<AssetVersion> _downLoadTasks, Action _downLoadOkCallBack) { tasks = _downLoadTasks; downLoadOkCallBack = _downLoadOkCallBack; @@ -66,6 +67,8 @@ IEnumerator Co_StartDownLoad() { int downLoadTryCount = 0; List<bool> checkDownFile = new List<bool>(); while (tasks.Count > 0) { DownloadMgr.MaxDownLoadTask = 10; @@ -74,7 +77,7 @@ { var assetVersion = tasks[i]; var remoteURL = StringUtility.Contact(LocalResManager.Instance.versionInfo.GetResourcesURL(VersionConfigEx.Get().branch), LocalResManager.fixPath, "/", assetVersion.relativePath); var localURL = StringUtility.Contact(ResourcesPath.Instance.ExternalStorePath, assetVersion.relativePath); var localURL = StringUtility.Contact(LocalResManager.Instance.ExternalStorePath, assetVersion.relativePath); DownloadMgr.Instance.AddTask(new DownloadTask(remoteURL, localURL)); } @@ -85,20 +88,43 @@ yield return null; } checkDownFile = new List<bool>(); //检查下载完成后的文件是否有效 var filledTasks = new List<AssetVersion>();//无效的文件 for (int i = 0; i < tasks.Count; i++) { var assetVersion = tasks[i]; var correctFile = assetVersion.CheckLocalFileValid(); var correctFile = assetVersion.CheckLocalFileValid(checkDownFile); if (correctFile) assetVersion.localValid = true; else filledTasks.Add(assetVersion); } if (filledTasks.Count > 0) { //文件大小或者MD5不对,1. cdn资源确实错误 2.cdn推送过程中 文件不匹配 //需要重新下载LogicVersion文件 if (checkDownFile.Count > 0) { downLoadTryCount++; } Debug.LogErrorFormat("资源下载完后有{0}个文件无效({1}),重新开始下载", filledTasks.Count, filledTasks[0].fileName); } tasks = filledTasks; if (downLoadTryCount >= 1) { LocalResManager.step = LocalResManager.LoadDllStep.PrepareDownLoad; break; } } if (downLoadTryCount >= 1) { Debug.LogError("logic资源下载失败,警告提示,退出协程"); LocalResManager.downLoadCount++; yield break; } Debug.Log("资源全部下载完成"); Assets/Launch/Launch.cs
@@ -265,6 +265,14 @@ private void PrepareDownLoad() { if (LocalResManager.downLoadCount > 3) { LocalResManager.step = LocalResManager.LoadDllStep.None; stop = true; HttpBehaviour.ConnectAllTimes = 9999; return; } LocalResManager.Instance.RequestLogicBytes(); } Assets/Launch/Manager/LocalResManager.cs
@@ -64,6 +64,8 @@ public bool isPCTestDownLoad = false; public static int downLoadCount = 0; public static readonly string[] VERSION_URL = new string[] { "http://gamecenter.secondworld.net.cn:11000/center/appversion_new.php/?"}; @@ -275,34 +277,38 @@ } static Dictionary<string, string> languageShowDict = new Dictionary<string, string>();//射中显示的多语言版本 Dictionary<string, string> languageDict = new Dictionary<string, string>();// unity语言配置对应的约定字符 string defaultLanguage = string.Empty; public void InitDefaultLanguage() { var config = InitialFunctionConfig.Get("Language").Numerical1; Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config); if (string.IsNullOrEmpty(config)) if (languageShowDict == null || languageShowDict.Count == 0) { var config = InitialFunctionConfig.Get("Language"); Debug.LogFormat("系统语言:{0} {1}", Application.systemLanguage, config.Numerical1); if (string.IsNullOrEmpty(config.Numerical1)) return; languageShowDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical1); languageDict = JsonMapper.ToObject<Dictionary<string, string>>(config.Numerical5); defaultLanguage = config.Numerical2; if (!languageShowDict.ContainsKey(defaultLanguage)) defaultLanguage = string.Empty; } var id = LocalSave.GetString("LANGUAGE_ID1"); if (!string.IsNullOrEmpty(id)) return; switch (Application.systemLanguage) string languageMark = ((int)Application.systemLanguage).ToString(); if (languageDict.ContainsKey(languageMark)) { case SystemLanguage.Chinese: case SystemLanguage.ChineseSimplified: case SystemLanguage.ChineseTraditional: { id = "zh"; break; id = languageDict[languageMark]; } } var json = JsonMapper.ToObject(config); if (json.Keys.Contains(id)) Id = id; else { //开启的情况下必须要有个默认值 Id = InitialFunctionConfig.Get("Language").Numerical2; } Id = languageShowDict.ContainsKey(id) ? id : defaultLanguage; Debug.LogFormat("系统语言:{0} 设置为{1}", Application.systemLanguage, Id); } //LogicBytes文件的MD5信息