Update YooAsset 2.3.8 -> 2.3.12

This commit is contained in:
Alex-Rachel
2025-07-08 23:02:24 +08:00
parent 71eb698038
commit 86b1ff5d7b
172 changed files with 2124 additions and 724 deletions

View File

@@ -44,7 +44,7 @@ namespace YooAsset
/// <summary>
/// 序列化(二进制文件)
/// </summary>
public static void SerializeToBinary(string savePath, PackageManifest manifest)
public static void SerializeToBinary(string savePath, PackageManifest manifest, IManifestServices services)
{
using (FileStream fs = new FileStream(savePath, FileMode.Create))
{
@@ -96,9 +96,20 @@ namespace YooAsset
buffer.WriteInt32Array(packageBundle.DependBundleIDs);
}
// 写入文件流
buffer.WriteToStream(fs);
fs.Flush();
// 清单处理操作
if (services != null)
{
var tempBytes = buffer.GetBytes();
var resultBytes = services.ProcessManifest(tempBytes);
fs.Write(resultBytes, 0, resultBytes.Length);
fs.Flush();
}
else
{
// 写入文件流
buffer.WriteToStream(fs);
fs.Flush();
}
}
}
@@ -113,10 +124,19 @@ namespace YooAsset
/// <summary>
/// 反序列化(二进制文件)
/// </summary>
public static PackageManifest DeserializeFromBinary(byte[] binaryData)
public static PackageManifest DeserializeFromBinary(byte[] binaryData, IManifestServices services)
{
// 创建缓存器
BufferReader buffer = new BufferReader(binaryData);
BufferReader buffer;
if (services != null)
{
var resultBytes = services.RestoreManifest(binaryData);
buffer = new BufferReader(resultBytes);
}
else
{
buffer = new BufferReader(binaryData);
}
// 读取文件标记
uint fileSign = buffer.ReadUInt32();

View File

@@ -10,6 +10,7 @@ namespace YooAsset
private enum ESteps
{
None,
RestoreFileData,
DeserializeFileHeader,
PrepareAssetList,
DeserializeAssetList,
@@ -19,7 +20,9 @@ namespace YooAsset
Done,
}
private readonly BufferReader _buffer;
private readonly IManifestServices _services;
private byte[] _sourceData;
private BufferReader _buffer;
private int _packageAssetCount;
private int _packageBundleCount;
private int _progressTotalValue;
@@ -30,13 +33,14 @@ namespace YooAsset
/// </summary>
public PackageManifest Manifest { private set; get; }
public DeserializeManifestOperation(byte[] binaryData)
public DeserializeManifestOperation(IManifestServices services, byte[] binaryData)
{
_buffer = new BufferReader(binaryData);
_services = services;
_sourceData = binaryData;
}
internal override void InternalStart()
{
_steps = ESteps.DeserializeFileHeader;
_steps = ESteps.RestoreFileData;
}
internal override void InternalUpdate()
{
@@ -45,6 +49,19 @@ namespace YooAsset
try
{
if (_steps == ESteps.RestoreFileData)
{
if (_services != null)
{
var resultData = _services.RestoreManifest(_sourceData);
if (resultData != null)
_sourceData = resultData;
}
_buffer = new BufferReader(_sourceData);
_steps = ESteps.DeserializeFileHeader;
}
if (_steps == ESteps.DeserializeFileHeader)
{
if (_buffer.IsValid == false)

View File

@@ -361,21 +361,21 @@ namespace YooAsset
/// 资源回收
/// 说明:尝试卸载指定的资源
/// </summary>
public void TryUnloadUnusedAsset(string location)
public void TryUnloadUnusedAsset(string location, int loopCount = 10)
{
DebugCheckInitialize();
AssetInfo assetInfo = ConvertLocationToAssetInfo(location, null);
_resourceManager.TryUnloadUnusedAsset(assetInfo);
_resourceManager.TryUnloadUnusedAsset(assetInfo, loopCount);
}
/// <summary>
/// 资源回收
/// 说明:尝试卸载指定的资源
/// </summary>
public void TryUnloadUnusedAsset(AssetInfo assetInfo)
public void TryUnloadUnusedAsset(AssetInfo assetInfo, int loopCount = 10)
{
DebugCheckInitialize();
_resourceManager.TryUnloadUnusedAsset(assetInfo);
_resourceManager.TryUnloadUnusedAsset(assetInfo, loopCount);
}
#endregion