0312 设置热更标识 logicversion 和assetversion 两个文件 的内容md5全异或取最后两个字母
1个文件已修改
43 ■■■■■ 已修改文件
Main/System/Login/LoginManager.cs 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Main/System/Login/LoginManager.cs
@@ -4,6 +4,7 @@
using System;
public class LoginManager : ManagerBase<LoginManager>
{
    public const uint DwVersionNo = 153518004;
@@ -309,22 +310,36 @@
    {
        try
        {
            string logicVersionMd5 = "";
            string assetVersionMd5 = "";
            string logicVersionMd5 = "00";
            string assetVersionMd5 = "00";
            // 初始化结果字节数组(MD5 是 16 字节)
            byte[] resultBytes = new byte[16];
            foreach (var item in LocalResManager.Instance.assetVersions)
            {
                // 对每个 MD5 进行异或运算
                byte[] md5Bytes = HexStringToByteArray(item.Value.md5);
                for (int j = 0; j < 16; j++)
                {
                    resultBytes[j] ^= md5Bytes[j];
                }
            var fieldInfo = typeof(LocalResManager).GetField("assetVersionsForHotCheck", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
            if (fieldInfo != null)
            {
                var assetVersionsObj = fieldInfo.GetValue(null);
                if (assetVersionsObj != null && assetVersionsObj is IDictionary)
                {
                    var assetVersionsForHotCheck = (IDictionary)assetVersionsObj;
                    foreach (DictionaryEntry item in assetVersionsForHotCheck)
                    {
                        var assetVersion = item.Value as LaunchCommon.AssetVersion;
                        if (assetVersion != null)
                        {
                            // 对每个 MD5 进行异或运算
                            byte[] md5Bytes = HexStringToByteArray(assetVersion.md5);
                            for (int j = 0; j < 16; j++)
                            {
                                resultBytes[j] ^= md5Bytes[j];
                            }
                        }
                    }
                    //取最后两位
                    logicVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
                }
            }
            //取最后两位
            logicVersionMd5 = BitConverter.ToString(resultBytes).Replace("-", "").ToLower().Substring(14, 2);
            resultBytes = new byte[16];
            foreach (var item in AssetVersionUtility.assetVersions)
@@ -343,11 +358,9 @@
        }
        catch
        {
            Debug.LogError("RefreshHotVersion 错误");
            Debug.LogError("RefreshHotVersion 错误");
        }
    }
    // 辅助方法:十六进制字符串转字节数组
    private byte[] HexStringToByteArray(string hex)