63 lines
2.2 KiB
C#
63 lines
2.2 KiB
C#
|
|
using System.Text;
|
|
using System;
|
|
|
|
namespace YooAsset.Editor
|
|
{
|
|
public class TaskUpdateBundleInfo_ESBP : TaskUpdateBundleInfo, IBuildTask
|
|
{
|
|
void IBuildTask.Run(BuildContext context)
|
|
{
|
|
UpdateBundleInfo(context);
|
|
}
|
|
|
|
protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
|
|
{
|
|
return "00000000000000000000000000000000"; //32位
|
|
}
|
|
protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
|
|
{
|
|
return 0;
|
|
}
|
|
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
|
|
{
|
|
string filePath = bundleInfo.PackageSourceFilePath;
|
|
return GetFilePathTempHash(filePath);
|
|
}
|
|
protected override string GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
|
|
{
|
|
return "00000000"; //8位
|
|
}
|
|
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext)
|
|
{
|
|
return GetBundleTempSize(bundleInfo);
|
|
}
|
|
|
|
private string GetFilePathTempHash(string filePath)
|
|
{
|
|
byte[] bytes = Encoding.UTF8.GetBytes(filePath);
|
|
return HashUtility.BytesMD5(bytes);
|
|
|
|
// 注意:在文件路径的哈希值冲突的情况下,可以使用下面的方法
|
|
//return $"{HashUtility.BytesMD5(bytes)}-{Guid.NewGuid():N}";
|
|
}
|
|
private long GetBundleTempSize(BuildBundleInfo bundleInfo)
|
|
{
|
|
long tempSize = 0;
|
|
|
|
var assetPaths = bundleInfo.GetAllMainAssetPaths();
|
|
foreach (var assetPath in assetPaths)
|
|
{
|
|
long size = FileUtility.GetFileSize(assetPath);
|
|
tempSize += size;
|
|
}
|
|
|
|
if (tempSize == 0)
|
|
{
|
|
string message = BuildLogger.GetErrorMessage(ErrorCode.BundleTempSizeIsZero, $"Bundle temp size is zero, check bundle main asset list : {bundleInfo.BundleName}");
|
|
throw new Exception(message);
|
|
}
|
|
return tempSize;
|
|
}
|
|
}
|
|
} |