Unity C#脚本 生成MD5码判断是否为同一个文件 热更新

using System;
using System.IO;
using System.Security.Cryptography;
using UnityEngine;

public class MD5Calculator : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        string filePath = "F:/unityProject/Hotupdate/Assets/AB/lua";
        string md5 = GetMD5HashFromFile(filePath);
        UnityEngine.Debug.Log("MD5 Hash of " + filePath + ": " + md5);
    }

    /// <summary>
    /// Get MD5 hash of a file
    /// </summary>
    /// <param name="filePath">Absolute file path</param>
    /// <returns>MD5 hash as string</returns>
    public static string GetMD5HashFromFile(string filePath)
    {
        try
        {
            using (var fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                using (var md5 = MD5.Create())
                {
                    byte[] hashBytes = md5.ComputeHash(fileStream);
                    return BitConverter.ToString(hashBytes).Replace("-", "").ToLowerInvariant();
                }
            }
        }
        catch (Exception ex)
        {
            UnityEngine.Debug.LogError("Error getting MD5 hash of file: " + ex.Message);
            return null;
        }
    }

    // Update is called once per frame
    void Update()
    {

    }
}



Unity C#中,判断两个相同类型的自定义类是否相同,主要看您的需求是指内容相同(即值相同)还是引用相同(即内存地址相同)。 1. 引用相同:如果您想判断两个对象是否引用同一个实例,即它们的内存地址是否相同,可以直接使用“==”运算符进行比较。如果两个对象变量指向同一个实例,结果为true;如果它们指向不同的实例,结果为false。 2. 内容相同:如果您想判断两个对象的内容是否相同,即它们的字段和属性值是否相等,您需要实现一个方法来自定义比较逻辑。通常,您可以通过重写Object类中的Equals方法或者实现IEquatable<T>接口来实现。在自定义类中,您可以重写Equals方法和GetHashCode方法来定义如何比较对象是否相等。这样,您可以根据类的具体逻辑来判断两个对象的内容是否相等。 下面是一个示例代,展示如何在自定义类中实现Equals方法和GetHashCode方法: ```csharp public class MyCustomClass : IEquatable<MyCustomClass> { public int Value1 { get; set; } public string Value2 { get; set; } public override bool Equals(object obj) { return Equals(obj as MyCustomClass); } public bool Equals(MyCustomClass other) { if (other == null) return false; return (this.Value1 == other.Value1) && (this.Value2 == other.Value2); } public override int GetHashCode() { unchecked // Overflow is fine, just wrap { int hash = 17; hash = hash * 23 + Value1.GetHashCode(); hash = hash * 23 + (Value2 == null ? 0 : Value2.GetHashCode()); return hash; } } } ``` 在上述代中,Equals方法首先检查传入的对象是否为null或者是否为MyCustomClass类型的实例,然后比较两个对象的Value1和Value2字段是否相等。GetHashCode方法则根据字段生成一个哈希,通常这个哈希会与Equals方法的逻辑保持一致。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值