mirror of
https://github.com/tuyoogame/YooAsset.git
synced 2026-05-25 18:20:15 +00:00
Compare commits
2 Commits
7bf00d4ff6
...
b0dc829b04
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b0dc829b04 | ||
|
|
b3ead90832 |
@@ -69,8 +69,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.VerifyFileData)
|
||||
{
|
||||
string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result);
|
||||
if (fileHash == _packageHash)
|
||||
if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash))
|
||||
{
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
@@ -59,8 +59,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.VerifyFileData)
|
||||
{
|
||||
string fileHash = HashUtility.BytesCRC32(_fileData);
|
||||
if (fileHash == _packageHash)
|
||||
if (ManifestTools.VerifyManifestData(_fileData, _packageHash))
|
||||
{
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
@@ -59,8 +59,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.VerifyFileData)
|
||||
{
|
||||
string fileHash = HashUtility.BytesCRC32(_fileData);
|
||||
if (fileHash == _packageHash)
|
||||
if (ManifestTools.VerifyManifestData(_fileData, _packageHash))
|
||||
{
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
@@ -72,8 +72,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.VerifyFileData)
|
||||
{
|
||||
string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result);
|
||||
if (fileHash == _packageHash)
|
||||
if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash))
|
||||
{
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
@@ -69,8 +69,7 @@ namespace YooAsset
|
||||
|
||||
if (_steps == ESteps.VerifyFileData)
|
||||
{
|
||||
string fileHash = HashUtility.BytesCRC32(_webDataRequestOp.Result);
|
||||
if (fileHash == _packageHash)
|
||||
if (ManifestTools.VerifyManifestData(_webDataRequestOp.Result, _packageHash))
|
||||
{
|
||||
_steps = ESteps.LoadManifest;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,30 @@ namespace YooAsset
|
||||
{
|
||||
internal static class ManifestTools
|
||||
{
|
||||
/// <summary>
|
||||
/// 验证清单文件的二进制数据
|
||||
/// </summary>
|
||||
public static bool VerifyManifestData(byte[] fileData, string hashValue)
|
||||
{
|
||||
if (fileData == null || fileData.Length == 0)
|
||||
return false;
|
||||
if (string.IsNullOrEmpty(hashValue))
|
||||
return false;
|
||||
|
||||
// 注意:兼容俩种验证方式
|
||||
// 注意:计算MD5的哈希值通常为32个字符
|
||||
string fileHash;
|
||||
if (hashValue.Length == 32)
|
||||
fileHash = HashUtility.BytesMD5(fileData);
|
||||
else
|
||||
fileHash = HashUtility.BytesCRC32(fileData);
|
||||
|
||||
if (fileHash == hashValue)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 序列化(JSON文件)
|
||||
/// </summary>
|
||||
@@ -197,9 +221,16 @@ namespace YooAsset
|
||||
manifest.AssetDic = new Dictionary<string, PackageAsset>(assetCount);
|
||||
|
||||
if (manifest.EnableAddressable)
|
||||
{
|
||||
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 3);
|
||||
}
|
||||
else
|
||||
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2);
|
||||
{
|
||||
if (manifest.LocationToLower)
|
||||
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2, StringComparer.OrdinalIgnoreCase);
|
||||
else
|
||||
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2);
|
||||
}
|
||||
|
||||
if (manifest.IncludeAssetGUID)
|
||||
manifest.AssetPathMapping2 = new Dictionary<string, string>(assetCount);
|
||||
@@ -221,8 +252,6 @@ namespace YooAsset
|
||||
// 填充AssetPathMapping1
|
||||
{
|
||||
string location = packageAsset.AssetPath;
|
||||
if (manifest.LocationToLower)
|
||||
location = location.ToLower();
|
||||
|
||||
// 添加原生路径的映射
|
||||
if (manifest.AssetPathMapping1.ContainsKey(location))
|
||||
|
||||
@@ -138,9 +138,6 @@ namespace YooAsset
|
||||
if (string.IsNullOrEmpty(location))
|
||||
return string.Empty;
|
||||
|
||||
if (LocationToLower)
|
||||
location = location.ToLower();
|
||||
|
||||
if (AssetPathMapping1.TryGetValue(location, out string assetPath))
|
||||
return assetPath;
|
||||
else
|
||||
@@ -307,9 +304,6 @@ namespace YooAsset
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
if (LocationToLower)
|
||||
location = location.ToLower();
|
||||
|
||||
if (AssetPathMapping1.TryGetValue(location, out string assetPath))
|
||||
{
|
||||
return assetPath;
|
||||
|
||||
Reference in New Issue
Block a user