三国卡牌客户端基础资源仓库
yyl
2025-05-20 ad754b0ed9a65f2ca8d705210beab9b055fe2664
launch部分的修改(重复检验下载的bytes的问题)
4个文件已修改
98 ■■■■ 已修改文件
Assets/Launch/Common/AssetVersion.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Common/DownLoadAndDiscompressTask.cs 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Launch.cs 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Launch/Manager/LocalResManager.cs 44 ●●●●● 补丁 | 查看 | 原始文档 | 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信息