mirror of https://github.com/tuyoogame/YooAsset
Compare commits
1 Commits
338ae8c422
...
a81e3d77c0
Author | SHA1 | Date |
---|---|---|
luckisnow | a81e3d77c0 |
|
@ -46,10 +46,6 @@ namespace YooAsset.Editor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PackageVersion;
|
public string PackageVersion;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 构建的包裹备注
|
|
||||||
/// </summary>
|
|
||||||
public string PackageNote;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 是否启用共享资源打包
|
/// 是否启用共享资源打包
|
||||||
|
@ -163,12 +159,6 @@ namespace YooAsset.Editor
|
||||||
{
|
{
|
||||||
BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
|
BuildLogger.Log($"Create pipeline output directory: {pipelineOutputDirectory}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 设置默认备注信息
|
|
||||||
if (string.IsNullOrEmpty(PackageNote))
|
|
||||||
{
|
|
||||||
PackageNote = DateTime.Now.ToString();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,6 @@ namespace YooAsset.Editor
|
||||||
manifest.BuildPipeline = buildParameters.BuildPipeline;
|
manifest.BuildPipeline = buildParameters.BuildPipeline;
|
||||||
manifest.PackageName = buildParameters.PackageName;
|
manifest.PackageName = buildParameters.PackageName;
|
||||||
manifest.PackageVersion = buildParameters.PackageVersion;
|
manifest.PackageVersion = buildParameters.PackageVersion;
|
||||||
manifest.PackageNote = buildParameters.PackageNote;
|
|
||||||
manifest.BundleList = GetAllPackageBundle(buildMapContext);
|
manifest.BundleList = GetAllPackageBundle(buildMapContext);
|
||||||
manifest.AssetList = GetAllPackageAsset(buildMapContext);
|
manifest.AssetList = GetAllPackageAsset(buildMapContext);
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@ namespace YooAsset.Editor
|
||||||
buildReport.Summary.BuildMode = buildParameters.BuildMode;
|
buildReport.Summary.BuildMode = buildParameters.BuildMode;
|
||||||
buildReport.Summary.BuildPackageName = buildParameters.PackageName;
|
buildReport.Summary.BuildPackageName = buildParameters.PackageName;
|
||||||
buildReport.Summary.BuildPackageVersion = buildParameters.PackageVersion;
|
buildReport.Summary.BuildPackageVersion = buildParameters.PackageVersion;
|
||||||
buildReport.Summary.BuildPackageNote = buildParameters.PackageNote;
|
|
||||||
|
|
||||||
// 收集器配置
|
// 收集器配置
|
||||||
buildReport.Summary.UniqueBundleName = buildMapContext.Command.UniqueBundleName;
|
buildReport.Summary.UniqueBundleName = buildMapContext.Command.UniqueBundleName;
|
||||||
|
|
|
@ -33,14 +33,6 @@ namespace YooAsset.Editor
|
||||||
if (AssetDatabase.IsValidFolder(assetInfo.AssetPath))
|
if (AssetDatabase.IsValidFolder(assetInfo.AssetPath))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// 忽略编辑器图标资源
|
|
||||||
if (assetInfo.AssetPath.Contains("/Gizmos/"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// 忽略编辑器专属资源
|
|
||||||
if (assetInfo.AssetPath.Contains("/Editor/") || assetInfo.AssetPath.Contains("/Editor Resources/"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
// 忽略编辑器下的类型资源
|
// 忽略编辑器下的类型资源
|
||||||
if (assetInfo.AssetType == typeof(LightingDataAsset))
|
if (assetInfo.AssetType == typeof(LightingDataAsset))
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -53,11 +53,6 @@ namespace YooAsset.Editor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string BuildPackageVersion;
|
public string BuildPackageVersion;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 构建包裹备注
|
|
||||||
/// </summary>
|
|
||||||
public string BuildPackageNote;
|
|
||||||
|
|
||||||
// 收集器配置
|
// 收集器配置
|
||||||
public bool UniqueBundleName;
|
public bool UniqueBundleName;
|
||||||
public bool EnableAddressable;
|
public bool EnableAddressable;
|
||||||
|
|
|
@ -65,7 +65,6 @@ namespace YooAsset.Editor
|
||||||
_items.Add(new ItemWrapper("Build Mode", $"{buildReport.Summary.BuildMode}"));
|
_items.Add(new ItemWrapper("Build Mode", $"{buildReport.Summary.BuildMode}"));
|
||||||
_items.Add(new ItemWrapper("Package Name", buildReport.Summary.BuildPackageName));
|
_items.Add(new ItemWrapper("Package Name", buildReport.Summary.BuildPackageName));
|
||||||
_items.Add(new ItemWrapper("Package Version", buildReport.Summary.BuildPackageVersion));
|
_items.Add(new ItemWrapper("Package Version", buildReport.Summary.BuildPackageVersion));
|
||||||
_items.Add(new ItemWrapper("Package Note", buildReport.Summary.BuildPackageNote));
|
|
||||||
|
|
||||||
_items.Add(new ItemWrapper(string.Empty, string.Empty));
|
_items.Add(new ItemWrapper(string.Empty, string.Empty));
|
||||||
_items.Add(new ItemWrapper("Collect Settings", string.Empty));
|
_items.Add(new ItemWrapper("Collect Settings", string.Empty));
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: da6402a4b93d31943b26fb99cebc0dfd
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,38 +0,0 @@
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class CacheFileElement
|
|
||||||
{
|
|
||||||
public string PackageName { private set; get; }
|
|
||||||
public string BundleGUID { private set; get; }
|
|
||||||
public string FileRootPath { private set; get; }
|
|
||||||
public string DataFilePath { private set; get; }
|
|
||||||
public string InfoFilePath { private set; get; }
|
|
||||||
|
|
||||||
public EFileVerifyResult Result;
|
|
||||||
public string DataFileCRC;
|
|
||||||
public long DataFileSize;
|
|
||||||
|
|
||||||
public CacheFileElement(string packageName, string bundleGUID, string fileRootPath, string dataFilePath, string infoFilePath)
|
|
||||||
{
|
|
||||||
PackageName = packageName;
|
|
||||||
BundleGUID = bundleGUID;
|
|
||||||
FileRootPath = fileRootPath;
|
|
||||||
DataFilePath = dataFilePath;
|
|
||||||
InfoFilePath = infoFilePath;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void DeleteFiles()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Directory.Delete(FileRootPath, true);
|
|
||||||
}
|
|
||||||
catch (System.Exception e)
|
|
||||||
{
|
|
||||||
YooLogger.Warning($"Failed to delete cache bundle folder : {e}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 0c361449cdcbd8746ba3fb948798ae1b
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,25 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class CacheHelper
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 获取默认的缓存根目录
|
|
||||||
/// </summary>
|
|
||||||
public static string GetDefaultCacheRoot()
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
// 注意:为了方便调试查看,编辑器下把存储目录放到项目里。
|
|
||||||
string projectPath = Path.GetDirectoryName(UnityEngine.Application.dataPath);
|
|
||||||
projectPath = PathUtility.RegularPath(projectPath);
|
|
||||||
return PathUtility.Combine(projectPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
|
||||||
#elif UNITY_STANDALONE
|
|
||||||
return PathUtility.Combine(UnityEngine.Application.dataPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
|
||||||
#else
|
|
||||||
return PathUtility.Combine(UnityEngine.Application.persistentDataPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class CacheWrapper
|
|
||||||
{
|
|
||||||
public string InfoFilePath { private set; get; }
|
|
||||||
public string DataFilePath { private set; get; }
|
|
||||||
public string DataFileCRC { private set; get; }
|
|
||||||
public long DataFileSize { private set; get; }
|
|
||||||
|
|
||||||
public CacheWrapper(string infoFilePath, string dataFilePath, string dataFileCRC, long dataFileSize)
|
|
||||||
{
|
|
||||||
InfoFilePath = infoFilePath;
|
|
||||||
DataFilePath = dataFilePath;
|
|
||||||
DataFileCRC = dataFileCRC;
|
|
||||||
DataFileSize = dataFileSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: ae2176c4ea6fbb3478bf8757def34cd7
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: db3336ad3b5a8f349a3144e77f23fcf8
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: ce78de82d3ce1a841a1e6bad099e0bab
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,52 +0,0 @@
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal interface ICacheSystem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 获取缓存文件的根目录
|
|
||||||
/// </summary>
|
|
||||||
string GetCacheFileRoot();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取所有缓存文件的GUID
|
|
||||||
/// </summary>
|
|
||||||
List<string> GetAllCachedBundleGUIDs();
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 是否记录了文件
|
|
||||||
/// </summary>
|
|
||||||
bool IsRecordFile(string bundleGUID);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 记录指定文件
|
|
||||||
/// </summary>
|
|
||||||
bool RecordFile(string bundleGUID, CacheWrapper wrapper);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 验证缓存文件
|
|
||||||
/// </summary>
|
|
||||||
EFileVerifyResult VerifyCacheFile(PackageBundle bundle);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 写入缓存文件
|
|
||||||
/// </summary>
|
|
||||||
bool WriteCacheFile(PackageBundle bundle, string copyPath);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 删除缓存文件
|
|
||||||
/// </summary>
|
|
||||||
bool DeleteCacheFile(string bundleGUID);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 写入文件信息
|
|
||||||
/// </summary>
|
|
||||||
void WriteInfoFile(string filePath, string dataFileCRC, long dataFileSize);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 读取文件信息
|
|
||||||
/// </summary>
|
|
||||||
void ReadInfoFile(string filePath, out string dataFileCRC, out long dataFileSize);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f878bc9a12f5d2d40aee754ddfaada86
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 8cae5a51fced527429445b140b8a0843
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,22 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class TempFileElement
|
|
||||||
{
|
|
||||||
public string TempFilePath { private set; get; }
|
|
||||||
public string TempFileCRC { private set; get; }
|
|
||||||
public long TempFileSize { private set; get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 注意:原子操作对象
|
|
||||||
/// </summary>
|
|
||||||
public int Result = 0;
|
|
||||||
|
|
||||||
public TempFileElement(string filePath, string fileCRC, long fileSize)
|
|
||||||
{
|
|
||||||
TempFilePath = filePath;
|
|
||||||
TempFileCRC = fileCRC;
|
|
||||||
TempFileSize = fileSize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 220136fdc4a13d84e97b1249cfc65f3b
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -10,17 +10,33 @@ namespace YooAsset
|
||||||
/// 缓存文件系统
|
/// 缓存文件系统
|
||||||
/// 说明:正在进行的下载器会在ResourcePackage销毁的时候执行Abort操作!
|
/// 说明:正在进行的下载器会在ResourcePackage销毁的时候执行Abort操作!
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class DefaultCacheFileSystem : IFileSystem, ICacheSystem
|
internal class DefaultCacheFileSystem : IFileSystem
|
||||||
{
|
{
|
||||||
|
public class FileWrapper
|
||||||
|
{
|
||||||
|
public string InfoFilePath { private set; get; }
|
||||||
|
public string DataFilePath { private set; get; }
|
||||||
|
public string DataFileCRC { private set; get; }
|
||||||
|
public long DataFileSize { private set; get; }
|
||||||
|
|
||||||
|
public FileWrapper(string infoFilePath, string dataFilePath, string dataFileCRC, long dataFileSize)
|
||||||
|
{
|
||||||
|
InfoFilePath = infoFilePath;
|
||||||
|
DataFilePath = dataFilePath;
|
||||||
|
DataFileCRC = dataFileCRC;
|
||||||
|
DataFileSize = dataFileSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected readonly Dictionary<string, DefaultDownloadFileOperation> _downloaders = new Dictionary<string, DefaultDownloadFileOperation>(1000);
|
protected readonly Dictionary<string, DefaultDownloadFileOperation> _downloaders = new Dictionary<string, DefaultDownloadFileOperation>(1000);
|
||||||
protected readonly Dictionary<string, CacheWrapper> _wrappers = new Dictionary<string, CacheWrapper>(10000);
|
protected readonly Dictionary<string, FileWrapper> _wrappers = new Dictionary<string, FileWrapper>(10000);
|
||||||
protected readonly Dictionary<string, Stream> _loadedStream = new Dictionary<string, Stream>(10000);
|
protected readonly Dictionary<string, Stream> _loadedStream = new Dictionary<string, Stream>(10000);
|
||||||
protected readonly Dictionary<string, string> _dataFilePaths = new Dictionary<string, string>(10000);
|
protected readonly Dictionary<string, string> _dataFilePaths = new Dictionary<string, string>(10000);
|
||||||
protected readonly Dictionary<string, string> _infoFilePaths = new Dictionary<string, string>(10000);
|
protected readonly Dictionary<string, string> _infoFilePaths = new Dictionary<string, string>(10000);
|
||||||
protected readonly Dictionary<string, string> _tempFilePaths = new Dictionary<string, string>(10000);
|
protected readonly Dictionary<string, string> _tempFilePaths = new Dictionary<string, string>(10000);
|
||||||
protected readonly List<string> _removeList = new List<string>(1000);
|
protected readonly List<string> _removeList = new List<string>(1000);
|
||||||
protected string _packageRoot;
|
protected string _packageRoot;
|
||||||
protected string _cacheFileRoot;
|
protected string _saveFileRoot;
|
||||||
protected string _tempFileRoot;
|
protected string _tempFileRoot;
|
||||||
protected string _manifestFileRoot;
|
protected string _manifestFileRoot;
|
||||||
|
|
||||||
|
@ -112,13 +128,13 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
public virtual FSClearAllBundleFilesOperation ClearAllBundleFilesAsync()
|
public virtual FSClearAllBundleFilesOperation ClearAllBundleFilesAsync()
|
||||||
{
|
{
|
||||||
var operation = new ClearAllCacheFilesOperation(this);
|
var operation = new DCFSClearAllBundleFilesOperation(this);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
public virtual FSClearUnusedBundleFilesOperation ClearUnusedBundleFilesAsync(PackageManifest manifest)
|
public virtual FSClearUnusedBundleFilesOperation ClearUnusedBundleFilesAsync(PackageManifest manifest)
|
||||||
{
|
{
|
||||||
var operation = new ClearUnusedCacheFilesOperation(this, manifest);
|
var operation = new DCFSClearUnusedBundleFilesOperation(this, manifest);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -238,10 +254,10 @@ namespace YooAsset
|
||||||
PackageName = packageName;
|
PackageName = packageName;
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(rootDirectory))
|
if (string.IsNullOrEmpty(rootDirectory))
|
||||||
rootDirectory = CacheHelper.GetDefaultCacheRoot();
|
rootDirectory = GetDefaultRoot();
|
||||||
|
|
||||||
_packageRoot = PathUtility.Combine(rootDirectory, packageName);
|
_packageRoot = PathUtility.Combine(rootDirectory, packageName);
|
||||||
_cacheFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.SaveFilesFolderName);
|
_saveFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.SaveFilesFolderName);
|
||||||
_tempFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.TempFilesFolderName);
|
_tempFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.TempFilesFolderName);
|
||||||
_manifestFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.ManifestFilesFolderName);
|
_manifestFileRoot = PathUtility.Combine(_packageRoot, DefaultCacheFileSystemDefine.ManifestFilesFolderName);
|
||||||
}
|
}
|
||||||
|
@ -356,21 +372,106 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 缓存系统
|
#region 内部方法
|
||||||
public string GetCacheFileRoot()
|
private readonly BufferWriter _sharedBuffer = new BufferWriter(1024);
|
||||||
|
public void WriteInfoFile(string filePath, string dataFileCRC, long dataFileSize)
|
||||||
{
|
{
|
||||||
return _cacheFileRoot;
|
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read))
|
||||||
|
{
|
||||||
|
_sharedBuffer.Clear();
|
||||||
|
_sharedBuffer.WriteUTF8(dataFileCRC);
|
||||||
|
_sharedBuffer.WriteInt64(dataFileSize);
|
||||||
|
_sharedBuffer.WriteToStream(fs);
|
||||||
|
fs.Flush();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public List<string> GetAllCachedBundleGUIDs()
|
public void ReadInfoFile(string filePath, out string dataFileCRC, out long dataFileSize)
|
||||||
{
|
{
|
||||||
return _wrappers.Keys.ToList();
|
byte[] binaryData = FileUtility.ReadAllBytes(filePath);
|
||||||
|
BufferReader buffer = new BufferReader(binaryData);
|
||||||
|
dataFileCRC = buffer.ReadUTF8();
|
||||||
|
dataFileSize = buffer.ReadInt64();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected string GetDefaultRoot()
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
// 注意:为了方便调试查看,编辑器下把存储目录放到项目里。
|
||||||
|
string projectPath = Path.GetDirectoryName(UnityEngine.Application.dataPath);
|
||||||
|
projectPath = PathUtility.RegularPath(projectPath);
|
||||||
|
return PathUtility.Combine(projectPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
||||||
|
#elif UNITY_STANDALONE
|
||||||
|
return PathUtility.Combine(UnityEngine.Application.dataPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
||||||
|
#else
|
||||||
|
return PathUtility.Combine(UnityEngine.Application.persistentDataPath, YooAssetSettingsData.Setting.DefaultYooFolderName);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
protected string GetDataFilePath(PackageBundle bundle)
|
||||||
|
{
|
||||||
|
if (_dataFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
||||||
|
{
|
||||||
|
string folderName = bundle.FileHash.Substring(0, 2);
|
||||||
|
filePath = PathUtility.Combine(_saveFileRoot, folderName, bundle.BundleGUID, DefaultCacheFileSystemDefine.SaveBundleDataFileName);
|
||||||
|
if (AppendFileExtension)
|
||||||
|
filePath += bundle.FileExtension;
|
||||||
|
_dataFilePaths.Add(bundle.BundleGUID, filePath);
|
||||||
|
}
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
protected string GetInfoFilePath(PackageBundle bundle)
|
||||||
|
{
|
||||||
|
if (_infoFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
||||||
|
{
|
||||||
|
string folderName = bundle.FileHash.Substring(0, 2);
|
||||||
|
filePath = PathUtility.Combine(_saveFileRoot, folderName, bundle.BundleGUID, DefaultCacheFileSystemDefine.SaveBundleInfoFileName);
|
||||||
|
_infoFilePaths.Add(bundle.BundleGUID, filePath);
|
||||||
|
}
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
public string GetTempFilePath(PackageBundle bundle)
|
||||||
|
{
|
||||||
|
if (_tempFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
||||||
|
{
|
||||||
|
filePath = PathUtility.Combine(_tempFileRoot, bundle.BundleGUID);
|
||||||
|
_tempFilePaths.Add(bundle.BundleGUID, filePath);
|
||||||
|
}
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
public string GetCacheFileLoadPath(PackageBundle bundle)
|
||||||
|
{
|
||||||
|
return GetDataFilePath(bundle);
|
||||||
|
}
|
||||||
|
public string GetCacheFilesRoot()
|
||||||
|
{
|
||||||
|
return _saveFileRoot;
|
||||||
|
}
|
||||||
|
public string GetCachePackageHashFilePath(string packageVersion)
|
||||||
|
{
|
||||||
|
string fileName = YooAssetSettingsData.GetPackageHashFileName(PackageName, packageVersion);
|
||||||
|
return PathUtility.Combine(_manifestFileRoot, fileName);
|
||||||
|
}
|
||||||
|
public string GetCachePackageManifestFilePath(string packageVersion)
|
||||||
|
{
|
||||||
|
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
|
||||||
|
return PathUtility.Combine(_manifestFileRoot, fileName);
|
||||||
|
}
|
||||||
|
public string GetSandboxAppFootPrintFilePath()
|
||||||
|
{
|
||||||
|
return PathUtility.Combine(_manifestFileRoot, DefaultCacheFileSystemDefine.AppFootPrintFileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 是否已经记录了文件
|
||||||
|
/// </summary>
|
||||||
public bool IsRecordFile(string bundleGUID)
|
public bool IsRecordFile(string bundleGUID)
|
||||||
{
|
{
|
||||||
return _wrappers.ContainsKey(bundleGUID);
|
return _wrappers.ContainsKey(bundleGUID);
|
||||||
}
|
}
|
||||||
public bool RecordFile(string bundleGUID, CacheWrapper wrapper)
|
|
||||||
|
/// <summary>
|
||||||
|
/// 记录文件信息
|
||||||
|
/// </summary>
|
||||||
|
public bool RecordFile(string bundleGUID, FileWrapper wrapper)
|
||||||
{
|
{
|
||||||
if (_wrappers.ContainsKey(bundleGUID))
|
if (_wrappers.ContainsKey(bundleGUID))
|
||||||
{
|
{
|
||||||
|
@ -382,14 +483,21 @@ namespace YooAsset
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 验证缓存文件
|
||||||
|
/// </summary>
|
||||||
public EFileVerifyResult VerifyCacheFile(PackageBundle bundle)
|
public EFileVerifyResult VerifyCacheFile(PackageBundle bundle)
|
||||||
{
|
{
|
||||||
if (_wrappers.TryGetValue(bundle.BundleGUID, out CacheWrapper wrapper) == false)
|
if (_wrappers.TryGetValue(bundle.BundleGUID, out FileWrapper wrapper) == false)
|
||||||
return EFileVerifyResult.CacheNotFound;
|
return EFileVerifyResult.CacheNotFound;
|
||||||
|
|
||||||
EFileVerifyResult result = FileVerifyHelper.FileVerify(wrapper.DataFilePath, wrapper.DataFileSize, wrapper.DataFileCRC, EFileVerifyLevel.High);
|
EFileVerifyResult result = FileSystemHelper.FileVerify(wrapper.DataFilePath, wrapper.DataFileSize, wrapper.DataFileCRC, EFileVerifyLevel.High);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 写入缓存文件
|
||||||
|
/// </summary>
|
||||||
public bool WriteCacheFile(PackageBundle bundle, string copyPath)
|
public bool WriteCacheFile(PackageBundle bundle, string copyPath)
|
||||||
{
|
{
|
||||||
if (_wrappers.ContainsKey(bundle.BundleGUID))
|
if (_wrappers.ContainsKey(bundle.BundleGUID))
|
||||||
|
@ -422,12 +530,16 @@ namespace YooAsset
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var wrapper = new CacheWrapper(infoFilePath, dataFilePath, bundle.FileCRC, bundle.FileSize);
|
FileWrapper wrapper = new FileWrapper(infoFilePath, dataFilePath, bundle.FileCRC, bundle.FileSize);
|
||||||
return RecordFile(bundle.BundleGUID, wrapper);
|
return RecordFile(bundle.BundleGUID, wrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 删除缓存文件
|
||||||
|
/// </summary>
|
||||||
public bool DeleteCacheFile(string bundleGUID)
|
public bool DeleteCacheFile(string bundleGUID)
|
||||||
{
|
{
|
||||||
if (_wrappers.TryGetValue(bundleGUID, out CacheWrapper wrapper))
|
if (_wrappers.TryGetValue(bundleGUID, out FileWrapper wrapper))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -450,78 +562,6 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly BufferWriter _sharedBuffer = new BufferWriter(1024);
|
|
||||||
public void WriteInfoFile(string filePath, string dataFileCRC, long dataFileSize)
|
|
||||||
{
|
|
||||||
using (FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.Read))
|
|
||||||
{
|
|
||||||
_sharedBuffer.Clear();
|
|
||||||
_sharedBuffer.WriteUTF8(dataFileCRC);
|
|
||||||
_sharedBuffer.WriteInt64(dataFileSize);
|
|
||||||
_sharedBuffer.WriteToStream(fs);
|
|
||||||
fs.Flush();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public void ReadInfoFile(string filePath, out string dataFileCRC, out long dataFileSize)
|
|
||||||
{
|
|
||||||
byte[] binaryData = FileUtility.ReadAllBytes(filePath);
|
|
||||||
BufferReader buffer = new BufferReader(binaryData);
|
|
||||||
dataFileCRC = buffer.ReadUTF8();
|
|
||||||
dataFileSize = buffer.ReadInt64();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region 内部方法
|
|
||||||
protected string GetDataFilePath(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
if (_dataFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
|
||||||
{
|
|
||||||
string folderName = bundle.FileHash.Substring(0, 2);
|
|
||||||
filePath = PathUtility.Combine(_cacheFileRoot, folderName, bundle.BundleGUID, DefaultCacheFileSystemDefine.SaveBundleDataFileName);
|
|
||||||
if (AppendFileExtension)
|
|
||||||
filePath += bundle.FileExtension;
|
|
||||||
_dataFilePaths.Add(bundle.BundleGUID, filePath);
|
|
||||||
}
|
|
||||||
return filePath;
|
|
||||||
}
|
|
||||||
protected string GetInfoFilePath(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
if (_infoFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
|
||||||
{
|
|
||||||
string folderName = bundle.FileHash.Substring(0, 2);
|
|
||||||
filePath = PathUtility.Combine(_cacheFileRoot, folderName, bundle.BundleGUID, DefaultCacheFileSystemDefine.SaveBundleInfoFileName);
|
|
||||||
_infoFilePaths.Add(bundle.BundleGUID, filePath);
|
|
||||||
}
|
|
||||||
return filePath;
|
|
||||||
}
|
|
||||||
public string GetTempFilePath(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
if (_tempFilePaths.TryGetValue(bundle.BundleGUID, out string filePath) == false)
|
|
||||||
{
|
|
||||||
filePath = PathUtility.Combine(_tempFileRoot, bundle.BundleGUID);
|
|
||||||
_tempFilePaths.Add(bundle.BundleGUID, filePath);
|
|
||||||
}
|
|
||||||
return filePath;
|
|
||||||
}
|
|
||||||
public string GetCacheFileLoadPath(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return GetDataFilePath(bundle);
|
|
||||||
}
|
|
||||||
public string GetCachePackageHashFilePath(string packageVersion)
|
|
||||||
{
|
|
||||||
string fileName = YooAssetSettingsData.GetPackageHashFileName(PackageName, packageVersion);
|
|
||||||
return PathUtility.Combine(_manifestFileRoot, fileName);
|
|
||||||
}
|
|
||||||
public string GetCachePackageManifestFilePath(string packageVersion)
|
|
||||||
{
|
|
||||||
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
|
|
||||||
return PathUtility.Combine(_manifestFileRoot, fileName);
|
|
||||||
}
|
|
||||||
public string GetSandboxAppFootPrintFilePath()
|
|
||||||
{
|
|
||||||
return PathUtility.Combine(_manifestFileRoot, DefaultCacheFileSystemDefine.AppFootPrintFileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 删除所有清单文件
|
/// 删除所有清单文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -533,6 +573,14 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 获取所有缓存文件GUID
|
||||||
|
/// </summary>
|
||||||
|
public List<string> GetAllCachedBundleGUIDs()
|
||||||
|
{
|
||||||
|
return _wrappers.Keys.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 加载加密资源文件
|
/// 加载加密资源文件
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal sealed class ClearAllCacheFilesOperation : FSClearAllBundleFilesOperation
|
internal sealed class DCFSClearAllBundleFilesOperation : FSClearAllBundleFilesOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -13,15 +13,15 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly ICacheSystem _cacheSystem;
|
private readonly DefaultCacheFileSystem _fileSystem;
|
||||||
private List<string> _allBundleGUIDs;
|
private List<string> _allBundleGUIDs;
|
||||||
private int _fileTotalCount = 0;
|
private int _fileTotalCount = 0;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
internal ClearAllCacheFilesOperation(ICacheSystem cacheSystem)
|
internal DCFSClearAllBundleFilesOperation(DefaultCacheFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
_cacheSystem = cacheSystem;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
|
@ -34,7 +34,7 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_steps == ESteps.GetAllCacheFiles)
|
if (_steps == ESteps.GetAllCacheFiles)
|
||||||
{
|
{
|
||||||
_allBundleGUIDs = _cacheSystem.GetAllCachedBundleGUIDs();
|
_allBundleGUIDs = _fileSystem.GetAllCachedBundleGUIDs();
|
||||||
_fileTotalCount = _allBundleGUIDs.Count;
|
_fileTotalCount = _allBundleGUIDs.Count;
|
||||||
_steps = ESteps.ClearAllCacheFiles;
|
_steps = ESteps.ClearAllCacheFiles;
|
||||||
YooLogger.Log($"Found all cache files count : {_fileTotalCount}");
|
YooLogger.Log($"Found all cache files count : {_fileTotalCount}");
|
||||||
|
@ -45,7 +45,7 @@ namespace YooAsset
|
||||||
for (int i = _allBundleGUIDs.Count - 1; i >= 0; i--)
|
for (int i = _allBundleGUIDs.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
string bundleGUID = _allBundleGUIDs[i];
|
string bundleGUID = _allBundleGUIDs[i];
|
||||||
_cacheSystem.DeleteCacheFile(bundleGUID);
|
_fileSystem.DeleteCacheFile(bundleGUID);
|
||||||
_allBundleGUIDs.RemoveAt(i);
|
_allBundleGUIDs.RemoveAt(i);
|
||||||
if (OperationSystem.IsBusy)
|
if (OperationSystem.IsBusy)
|
||||||
break;
|
break;
|
|
@ -3,7 +3,7 @@ using System.Collections.Generic;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal sealed class ClearUnusedCacheFilesOperation : FSClearUnusedBundleFilesOperation
|
internal sealed class DCFSClearUnusedBundleFilesOperation : FSClearUnusedBundleFilesOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -13,16 +13,16 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly ICacheSystem _cacheSystem;
|
private readonly DefaultCacheFileSystem _fileSystem;
|
||||||
private readonly PackageManifest _manifest;
|
private readonly PackageManifest _manifest;
|
||||||
private List<string> _unusedBundleGUIDs;
|
private List<string> _unusedBundleGUIDs;
|
||||||
private int _unusedFileTotalCount = 0;
|
private int _unusedFileTotalCount = 0;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
internal ClearUnusedCacheFilesOperation(ICacheSystem cacheSystem, PackageManifest manifest)
|
internal DCFSClearUnusedBundleFilesOperation(DefaultCacheFileSystem fileSystem, PackageManifest manifest)
|
||||||
{
|
{
|
||||||
_cacheSystem = cacheSystem;
|
_fileSystem = fileSystem;
|
||||||
_manifest = manifest;
|
_manifest = manifest;
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
|
@ -47,7 +47,7 @@ namespace YooAsset
|
||||||
for (int i = _unusedBundleGUIDs.Count - 1; i >= 0; i--)
|
for (int i = _unusedBundleGUIDs.Count - 1; i >= 0; i--)
|
||||||
{
|
{
|
||||||
string bundleGUID = _unusedBundleGUIDs[i];
|
string bundleGUID = _unusedBundleGUIDs[i];
|
||||||
_cacheSystem.DeleteCacheFile(bundleGUID);
|
_fileSystem.DeleteCacheFile(bundleGUID);
|
||||||
_unusedBundleGUIDs.RemoveAt(i);
|
_unusedBundleGUIDs.RemoveAt(i);
|
||||||
if (OperationSystem.IsBusy)
|
if (OperationSystem.IsBusy)
|
||||||
break;
|
break;
|
||||||
|
@ -68,7 +68,7 @@ namespace YooAsset
|
||||||
|
|
||||||
private List<string> GetUnusedBundleGUIDs()
|
private List<string> GetUnusedBundleGUIDs()
|
||||||
{
|
{
|
||||||
var allBundleGUIDs = _cacheSystem.GetAllCachedBundleGUIDs();
|
var allBundleGUIDs = _fileSystem.GetAllCachedBundleGUIDs();
|
||||||
List<string> result = new List<string>(allBundleGUIDs.Count);
|
List<string> result = new List<string>(allBundleGUIDs.Count);
|
||||||
foreach (var bundleGUID in allBundleGUIDs)
|
foreach (var bundleGUID in allBundleGUIDs)
|
||||||
{
|
{
|
|
@ -94,9 +94,6 @@ namespace YooAsset
|
||||||
// 等待验证完成
|
// 等待验证完成
|
||||||
if (_steps == ESteps.CheckVerifyTempFile)
|
if (_steps == ESteps.CheckVerifyTempFile)
|
||||||
{
|
{
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
_verifyOperation.WaitForAsyncComplete();
|
|
||||||
|
|
||||||
if (_verifyOperation.IsDone == false)
|
if (_verifyOperation.IsDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -157,6 +154,9 @@ namespace YooAsset
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (_verifyOperation != null)
|
||||||
|
_verifyOperation.WaitForAsyncComplete();
|
||||||
|
|
||||||
// 注意:如果是导入或解压本地文件,执行等待完毕
|
// 注意:如果是导入或解压本地文件,执行等待完毕
|
||||||
if (isReuqestLocalFile)
|
if (isReuqestLocalFile)
|
||||||
{
|
{
|
||||||
|
@ -305,9 +305,6 @@ namespace YooAsset
|
||||||
// 等待验证完成
|
// 等待验证完成
|
||||||
if (_steps == ESteps.CheckVerifyTempFile)
|
if (_steps == ESteps.CheckVerifyTempFile)
|
||||||
{
|
{
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
_verifyOperation.WaitForAsyncComplete();
|
|
||||||
|
|
||||||
if (_verifyOperation.IsDone == false)
|
if (_verifyOperation.IsDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -367,6 +364,9 @@ namespace YooAsset
|
||||||
|
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (_verifyOperation != null)
|
||||||
|
_verifyOperation.WaitForAsyncComplete();
|
||||||
|
|
||||||
// 注意:如果是导入或解压本地文件,执行等待完毕
|
// 注意:如果是导入或解压本地文件,执行等待完毕
|
||||||
if (isReuqestLocalFile)
|
if (isReuqestLocalFile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_searchCacheFilesOp == null)
|
if (_searchCacheFilesOp == null)
|
||||||
{
|
{
|
||||||
_searchCacheFilesOp = new SearchCacheFilesOperation(_fileSytem, _fileSytem.PackageName, _fileSytem.AppendFileExtension);
|
_searchCacheFilesOp = new SearchCacheFilesOperation(_fileSytem);
|
||||||
OperationSystem.StartOperation(_fileSytem.PackageName, _searchCacheFilesOp);
|
OperationSystem.StartOperation(_fileSytem.PackageName, _searchCacheFilesOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_verifyCacheFilesOp == null)
|
if (_verifyCacheFilesOp == null)
|
||||||
{
|
{
|
||||||
_verifyCacheFilesOp = new VerifyCacheFilesOperation(_fileSytem, _fileSytem.FileVerifyLevel, _searchCacheFilesOp.Result);
|
_verifyCacheFilesOp = new VerifyCacheFilesOperation(_fileSytem, _searchCacheFilesOp.Result);
|
||||||
OperationSystem.StartOperation(_fileSytem.PackageName, _verifyCacheFilesOp);
|
OperationSystem.StartOperation(_fileSytem.PackageName, _verifyCacheFilesOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,9 +58,6 @@ namespace YooAsset
|
||||||
_downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam);
|
_downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
_downloadFileOp.WaitForAsyncComplete();
|
|
||||||
|
|
||||||
DownloadProgress = _downloadFileOp.DownloadProgress;
|
DownloadProgress = _downloadFileOp.DownloadProgress;
|
||||||
DownloadedBytes = _downloadFileOp.DownloadedBytes;
|
DownloadedBytes = _downloadFileOp.DownloadedBytes;
|
||||||
if (_downloadFileOp.IsDone == false)
|
if (_downloadFileOp.IsDone == false)
|
||||||
|
@ -201,6 +198,9 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (_downloadFileOp != null)
|
||||||
|
_downloadFileOp.WaitForAsyncComplete();
|
||||||
|
|
||||||
if (ExecuteWhileDone())
|
if (ExecuteWhileDone())
|
||||||
{
|
{
|
||||||
if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed)
|
if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed)
|
||||||
|
@ -274,9 +274,6 @@ namespace YooAsset
|
||||||
_downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam);
|
_downloadFileOp = _fileSystem.DownloadFileAsync(_bundle, downloadParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
_downloadFileOp.WaitForAsyncComplete();
|
|
||||||
|
|
||||||
DownloadProgress = _downloadFileOp.DownloadProgress;
|
DownloadProgress = _downloadFileOp.DownloadProgress;
|
||||||
DownloadedBytes = _downloadFileOp.DownloadedBytes;
|
DownloadedBytes = _downloadFileOp.DownloadedBytes;
|
||||||
if (_downloadFileOp.IsDone == false)
|
if (_downloadFileOp.IsDone == false)
|
||||||
|
@ -316,6 +313,9 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (_downloadFileOp != null)
|
||||||
|
_downloadFileOp.WaitForAsyncComplete();
|
||||||
|
|
||||||
if (ExecuteWhileDone())
|
if (ExecuteWhileDone())
|
||||||
{
|
{
|
||||||
if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed)
|
if (_downloadFileOp != null && _downloadFileOp.Status == EOperationStatus.Failed)
|
||||||
|
|
|
@ -15,9 +15,7 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly ICacheSystem _cacheSystem;
|
private readonly DefaultCacheFileSystem _fileSystem;
|
||||||
private readonly string _packageName;
|
|
||||||
private readonly bool _appendFileExtension;
|
|
||||||
private IEnumerator<DirectoryInfo> _filesEnumerator = null;
|
private IEnumerator<DirectoryInfo> _filesEnumerator = null;
|
||||||
private float _verifyStartTime;
|
private float _verifyStartTime;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
@ -28,11 +26,9 @@ namespace YooAsset
|
||||||
public readonly List<CacheFileElement> Result = new List<CacheFileElement>(5000);
|
public readonly List<CacheFileElement> Result = new List<CacheFileElement>(5000);
|
||||||
|
|
||||||
|
|
||||||
internal SearchCacheFilesOperation(ICacheSystem cacheSystem, string packageName, bool appendFileExtension)
|
internal SearchCacheFilesOperation(DefaultCacheFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
_cacheSystem = cacheSystem;
|
_fileSystem = fileSystem;
|
||||||
_packageName = packageName;
|
|
||||||
_appendFileExtension = appendFileExtension;
|
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
|
@ -46,7 +42,7 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_steps == ESteps.Prepare)
|
if (_steps == ESteps.Prepare)
|
||||||
{
|
{
|
||||||
DirectoryInfo rootDirectory = new DirectoryInfo(_cacheSystem.GetCacheFileRoot());
|
DirectoryInfo rootDirectory = new DirectoryInfo(_fileSystem.GetCacheFilesRoot());
|
||||||
if (rootDirectory.Exists)
|
if (rootDirectory.Exists)
|
||||||
{
|
{
|
||||||
var directorieInfos = rootDirectory.EnumerateDirectories();
|
var directorieInfos = rootDirectory.EnumerateDirectories();
|
||||||
|
@ -84,7 +80,7 @@ namespace YooAsset
|
||||||
foreach (var chidDirectory in childDirectories)
|
foreach (var chidDirectory in childDirectories)
|
||||||
{
|
{
|
||||||
string bundleGUID = chidDirectory.Name;
|
string bundleGUID = chidDirectory.Name;
|
||||||
if (_cacheSystem.IsRecordFile(bundleGUID))
|
if (_fileSystem.IsRecordFile(bundleGUID))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// 创建验证元素类
|
// 创建验证元素类
|
||||||
|
@ -93,14 +89,14 @@ namespace YooAsset
|
||||||
string infoFilePath = $"{fileRootPath}/{ DefaultCacheFileSystemDefine.SaveBundleInfoFileName}";
|
string infoFilePath = $"{fileRootPath}/{ DefaultCacheFileSystemDefine.SaveBundleInfoFileName}";
|
||||||
|
|
||||||
// 存储的数据文件追加文件格式
|
// 存储的数据文件追加文件格式
|
||||||
if (_appendFileExtension)
|
if (_fileSystem.AppendFileExtension)
|
||||||
{
|
{
|
||||||
string dataFileExtension = FindDataFileExtension(chidDirectory);
|
string dataFileExtension = FindDataFileExtension(chidDirectory);
|
||||||
if (string.IsNullOrEmpty(dataFileExtension) == false)
|
if (string.IsNullOrEmpty(dataFileExtension) == false)
|
||||||
dataFilePath += dataFileExtension;
|
dataFilePath += dataFileExtension;
|
||||||
}
|
}
|
||||||
|
|
||||||
var element = new CacheFileElement(_packageName, bundleGUID, fileRootPath, dataFilePath, infoFilePath);
|
var element = new CacheFileElement(_fileSystem.PackageName, bundleGUID, fileRootPath, dataFilePath, infoFilePath);
|
||||||
Result.Add(element);
|
Result.Add(element);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,44 @@ using System.Threading;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
|
internal class CacheFileElement
|
||||||
|
{
|
||||||
|
public string PackageName { private set; get; }
|
||||||
|
public string BundleGUID { private set; get; }
|
||||||
|
public string FileRootPath { private set; get; }
|
||||||
|
public string DataFilePath { private set; get; }
|
||||||
|
public string InfoFilePath { private set; get; }
|
||||||
|
|
||||||
|
public EFileVerifyResult Result;
|
||||||
|
public string DataFileCRC;
|
||||||
|
public long DataFileSize;
|
||||||
|
|
||||||
|
public CacheFileElement(string packageName, string bundleGUID, string fileRootPath, string dataFilePath, string infoFilePath)
|
||||||
|
{
|
||||||
|
PackageName = packageName;
|
||||||
|
BundleGUID = bundleGUID;
|
||||||
|
FileRootPath = fileRootPath;
|
||||||
|
DataFilePath = dataFilePath;
|
||||||
|
InfoFilePath = infoFilePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteFiles()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Directory.Delete(FileRootPath, true);
|
||||||
|
}
|
||||||
|
catch (System.Exception e)
|
||||||
|
{
|
||||||
|
YooLogger.Warning($"Failed to delete cache bundle folder : {e}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 缓存文件验证(线程版)
|
/// 缓存文件验证(线程版)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class VerifyCacheFilesOperation : AsyncOperationBase
|
internal class VerifyCacheFilesOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -20,10 +54,10 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly ThreadSyncContext _syncContext = new ThreadSyncContext();
|
private readonly ThreadSyncContext _syncContext = new ThreadSyncContext();
|
||||||
private readonly ICacheSystem _cacheSystem;
|
private readonly DefaultCacheFileSystem _fileSystem;
|
||||||
private readonly EFileVerifyLevel _verifyLevel;
|
|
||||||
private List<CacheFileElement> _waitingList;
|
private List<CacheFileElement> _waitingList;
|
||||||
private List<CacheFileElement> _verifyingList;
|
private List<CacheFileElement> _verifyingList;
|
||||||
|
private EFileVerifyLevel _verifyLevel = EFileVerifyLevel.Middle;
|
||||||
private int _verifyMaxNum;
|
private int _verifyMaxNum;
|
||||||
private int _verifyTotalCount;
|
private int _verifyTotalCount;
|
||||||
private float _verifyStartTime;
|
private float _verifyStartTime;
|
||||||
|
@ -32,11 +66,11 @@ namespace YooAsset
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
internal VerifyCacheFilesOperation(ICacheSystem cacheSystem, EFileVerifyLevel verifyLevel, List<CacheFileElement> elements)
|
internal VerifyCacheFilesOperation(DefaultCacheFileSystem fileSystem, List<CacheFileElement> elements)
|
||||||
{
|
{
|
||||||
_cacheSystem = cacheSystem;
|
_fileSystem = fileSystem;
|
||||||
_verifyLevel = verifyLevel;
|
|
||||||
_waitingList = elements;
|
_waitingList = elements;
|
||||||
|
_verifyLevel = _fileSystem.FileVerifyLevel;
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
|
@ -124,8 +158,8 @@ namespace YooAsset
|
||||||
if (element.Result == EFileVerifyResult.Succeed)
|
if (element.Result == EFileVerifyResult.Succeed)
|
||||||
{
|
{
|
||||||
_succeedCount++;
|
_succeedCount++;
|
||||||
var fileWrapper = new CacheWrapper(element.InfoFilePath, element.DataFilePath, element.DataFileCRC, element.DataFileSize);
|
var fileWrapper = new DefaultCacheFileSystem.FileWrapper(element.InfoFilePath, element.DataFilePath, element.DataFileCRC, element.DataFileSize);
|
||||||
_cacheSystem.RecordFile(element.BundleGUID, fileWrapper);
|
_fileSystem.RecordFile(element.BundleGUID, fileWrapper);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -157,7 +191,7 @@ namespace YooAsset
|
||||||
return EFileVerifyResult.InfoFileNotExisted;
|
return EFileVerifyResult.InfoFileNotExisted;
|
||||||
|
|
||||||
// 解析信息文件获取验证数据
|
// 解析信息文件获取验证数据
|
||||||
_cacheSystem.ReadInfoFile(element.InfoFilePath, out element.DataFileCRC, out element.DataFileSize);
|
_fileSystem.ReadInfoFile(element.InfoFilePath, out element.DataFileCRC, out element.DataFileSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
|
@ -165,7 +199,7 @@ namespace YooAsset
|
||||||
return EFileVerifyResult.Exception;
|
return EFileVerifyResult.Exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
return FileVerifyHelper.FileVerify(element.DataFilePath, element.DataFileSize, element.DataFileCRC, verifyLevel);
|
return FileSystemHelper.FileVerify(element.DataFilePath, element.DataFileSize, element.DataFileCRC, verifyLevel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,10 +3,29 @@ using System.Threading;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
|
internal class TempFileElement
|
||||||
|
{
|
||||||
|
public string TempFilePath { private set; get; }
|
||||||
|
public string TempFileCRC { private set; get; }
|
||||||
|
public long TempFileSize { private set; get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 注意:原子操作对象
|
||||||
|
/// </summary>
|
||||||
|
public int Result = 0;
|
||||||
|
|
||||||
|
public TempFileElement(string filePath, string fileCRC, long fileSize)
|
||||||
|
{
|
||||||
|
TempFilePath = filePath;
|
||||||
|
TempFileCRC = fileCRC;
|
||||||
|
TempFileSize = fileSize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 下载文件验证(线程版)
|
/// 下载文件验证(线程版)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal sealed class VerifyTempFileOperation : AsyncOperationBase
|
internal class VerifyTempFileOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -22,7 +41,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 验证结果
|
/// 验证结果
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public EFileVerifyResult VerifyResult { private set; get; }
|
public EFileVerifyResult VerifyResult { protected set; get; }
|
||||||
|
|
||||||
|
|
||||||
internal VerifyTempFileOperation(TempFileElement element)
|
internal VerifyTempFileOperation(TempFileElement element)
|
||||||
|
@ -84,7 +103,7 @@ namespace YooAsset
|
||||||
private void VerifyInThread(object obj)
|
private void VerifyInThread(object obj)
|
||||||
{
|
{
|
||||||
TempFileElement element = (TempFileElement)obj;
|
TempFileElement element = (TempFileElement)obj;
|
||||||
int result = (int)FileVerifyHelper.FileVerify(element.TempFilePath, element.TempFileSize, element.TempFileCRC, EFileVerifyLevel.High);
|
int result = (int)FileSystemHelper.FileVerify(element.TempFilePath, element.TempFileSize, element.TempFileCRC, EFileVerifyLevel.High);
|
||||||
element.Result = result;
|
element.Result = result;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -36,17 +36,6 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 自定义参数
|
|
||||||
/// <summary>
|
|
||||||
/// 异步模拟加载最小帧数
|
|
||||||
/// </summary>
|
|
||||||
public int _asyncSimulateMinFrame = 1;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 异步模拟加载最大帧数
|
|
||||||
/// </summary>
|
|
||||||
public int _asyncSimulateMaxFrame = 1;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public DefaultEditorFileSystem()
|
public DefaultEditorFileSystem()
|
||||||
{
|
{
|
||||||
|
@ -97,18 +86,7 @@ namespace YooAsset
|
||||||
|
|
||||||
public virtual void SetParameter(string name, object value)
|
public virtual void SetParameter(string name, object value)
|
||||||
{
|
{
|
||||||
if (name == FileSystemParametersDefine.ASYNC_SIMULATE_MIN_FRAME)
|
YooLogger.Warning($"Invalid parameter : {name}");
|
||||||
{
|
|
||||||
_asyncSimulateMinFrame = (int)value;
|
|
||||||
}
|
|
||||||
else if (name == FileSystemParametersDefine.ASYNC_SIMULATE_MAX_FRAME)
|
|
||||||
{
|
|
||||||
_asyncSimulateMaxFrame = (int)value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
YooLogger.Warning($"Invalid parameter : {name}");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public virtual void OnCreate(string packageName, string rootDirectory)
|
public virtual void OnCreate(string packageName, string rootDirectory)
|
||||||
{
|
{
|
||||||
|
@ -153,7 +131,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
throw new System.NotImplementedException();
|
throw new System.NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
#region 内部方法
|
#region 内部方法
|
||||||
public string GetEditorPackageVersionFilePath()
|
public string GetEditorPackageVersionFilePath()
|
||||||
{
|
{
|
||||||
|
@ -170,15 +148,6 @@ namespace YooAsset
|
||||||
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
|
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
|
||||||
return PathUtility.Combine(FileRoot, fileName);
|
return PathUtility.Combine(FileRoot, fileName);
|
||||||
}
|
}
|
||||||
public int GetAsyncSimulateFrame()
|
|
||||||
{
|
|
||||||
if (_asyncSimulateMinFrame > _asyncSimulateMaxFrame)
|
|
||||||
{
|
|
||||||
_asyncSimulateMinFrame = _asyncSimulateMaxFrame;
|
|
||||||
}
|
|
||||||
|
|
||||||
return UnityEngine.Random.Range(_asyncSimulateMinFrame, _asyncSimulateMaxFrame + 1);
|
|
||||||
}
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -3,19 +3,8 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DEFSLoadBundleOperation : FSLoadBundleOperation
|
internal class DEFSLoadBundleOperation : FSLoadBundleOperation
|
||||||
{
|
{
|
||||||
protected enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
DownloadFile,
|
|
||||||
LoadAssetBundle,
|
|
||||||
CheckResult,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultEditorFileSystem _fileSystem;
|
private readonly DefaultEditorFileSystem _fileSystem;
|
||||||
private readonly PackageBundle _bundle;
|
private readonly PackageBundle _bundle;
|
||||||
private int _asyncSimulateFrame;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
internal DEFSLoadBundleOperation(DefaultEditorFileSystem fileSystem, PackageBundle bundle)
|
internal DEFSLoadBundleOperation(DefaultEditorFileSystem fileSystem, PackageBundle bundle)
|
||||||
{
|
{
|
||||||
|
@ -24,53 +13,15 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
_steps = ESteps.DownloadFile;
|
DownloadProgress = 1f;
|
||||||
|
DownloadedBytes = _bundle.FileSize;
|
||||||
|
Status = EOperationStatus.Succeed;
|
||||||
}
|
}
|
||||||
internal override void InternalOnUpdate()
|
internal override void InternalOnUpdate()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.DownloadFile)
|
|
||||||
{
|
|
||||||
_asyncSimulateFrame = _fileSystem.GetAsyncSimulateFrame();
|
|
||||||
DownloadProgress = 1f;
|
|
||||||
DownloadedBytes = _bundle.FileSize;
|
|
||||||
_steps = ESteps.LoadAssetBundle;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.LoadAssetBundle)
|
|
||||||
{
|
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
{
|
|
||||||
_steps = ESteps.CheckResult;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (_asyncSimulateFrame <= 0)
|
|
||||||
_steps = ESteps.CheckResult;
|
|
||||||
else
|
|
||||||
_asyncSimulateFrame--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.CheckResult)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Result = new VirtualBundle(_fileSystem, _bundle);
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
internal override void InternalWaitForAsyncComplete()
|
internal override void InternalWaitForAsyncComplete()
|
||||||
{
|
{
|
||||||
while (true)
|
|
||||||
{
|
|
||||||
if (ExecuteWhileDone())
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
public override void AbortDownloadOperation()
|
public override void AbortDownloadOperation()
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Web文件系统
|
/// Web文件系统
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class DefaultWebServerFileSystem : IFileSystem
|
internal class DefaultWebFileSystem : IFileSystem
|
||||||
{
|
{
|
||||||
public class FileWrapper
|
public class FileWrapper
|
||||||
{
|
{
|
||||||
|
@ -59,24 +59,24 @@ namespace YooAsset
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
public DefaultWebServerFileSystem()
|
public DefaultWebFileSystem()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync()
|
public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync()
|
||||||
{
|
{
|
||||||
var operation = new DWSFSInitializeOperation(this);
|
var operation = new DWFSInitializeOperation(this);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout)
|
public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout)
|
||||||
{
|
{
|
||||||
var operation = new DWSFSLoadPackageManifestOperation(this, packageVersion, timeout);
|
var operation = new DWFSLoadPackageManifestOperation(this, timeout);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout)
|
public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout)
|
||||||
{
|
{
|
||||||
var operation = new DWSFSRequestPackageVersionOperation(this, timeout);
|
var operation = new DWFSRequestPackageVersionOperation(this, timeout);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -98,7 +98,7 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle)
|
public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle)
|
||||||
{
|
{
|
||||||
var operation = new DWSFSLoadAssetBundleOperation(this, bundle);
|
var operation = new DWFSLoadAssetBundleOperation(this, bundle);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_wrappers.ContainsKey(bundleGUID))
|
if (_wrappers.ContainsKey(bundleGUID))
|
||||||
{
|
{
|
||||||
YooLogger.Error($"{nameof(DefaultWebServerFileSystem)} has element : {bundleGUID}");
|
YooLogger.Error($"{nameof(DefaultWebFileSystem)} has element : {bundleGUID}");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DWSFSInitializeOperation : FSInitializeFileSystemOperation
|
internal class DWFSInitializeOperation : FSInitializeFileSystemOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -10,12 +10,12 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private LoadWebServerCatalogFileOperation _loadCatalogFileOp;
|
private LoadWebCatalogFileOperation _loadCatalogFileOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
public DWSFSInitializeOperation(DefaultWebServerFileSystem fileSystem)
|
public DWFSInitializeOperation(DefaultWebFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ namespace YooAsset
|
||||||
DefaultBuildinFileSystemBuild.CreateBuildinCatalogFile(_fileSystem.PackageName, packageRoot);
|
DefaultBuildinFileSystemBuild.CreateBuildinCatalogFile(_fileSystem.PackageName, packageRoot);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
_loadCatalogFileOp = new LoadWebServerCatalogFileOperation(_fileSystem);
|
_loadCatalogFileOp = new LoadWebCatalogFileOperation(_fileSystem);
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _loadCatalogFileOp);
|
OperationSystem.StartOperation(_fileSystem.PackageName, _loadCatalogFileOp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DWSFSLoadAssetBundleOperation : FSLoadBundleOperation
|
internal class DWFSLoadAssetBundleOperation : FSLoadBundleOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -10,13 +10,13 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly PackageBundle _bundle;
|
private readonly PackageBundle _bundle;
|
||||||
private DownloadHandlerAssetBundleOperation _downloadhanlderAssetBundleOp;
|
private DownloadHandlerAssetBundleOperation _downloadhanlderAssetBundleOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
internal DWSFSLoadAssetBundleOperation(DefaultWebServerFileSystem fileSystem, PackageBundle bundle)
|
internal DWFSLoadAssetBundleOperation(DefaultWebFileSystem fileSystem, PackageBundle bundle)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_bundle = bundle;
|
_bundle = bundle;
|
||||||
|
@ -38,7 +38,7 @@ namespace YooAsset
|
||||||
string fileLoadPath = _fileSystem.GetWebFileLoadPath(_bundle);
|
string fileLoadPath = _fileSystem.GetWebFileLoadPath(_bundle);
|
||||||
downloadParam.MainURL = DownloadSystemHelper.ConvertToWWWPath(fileLoadPath);
|
downloadParam.MainURL = DownloadSystemHelper.ConvertToWWWPath(fileLoadPath);
|
||||||
downloadParam.FallbackURL = downloadParam.MainURL;
|
downloadParam.FallbackURL = downloadParam.MainURL;
|
||||||
_downloadhanlderAssetBundleOp = new DownloadHandlerAssetBundleOperation(_fileSystem.DisableUnityWebCache, _bundle, downloadParam);
|
_downloadhanlderAssetBundleOp = new DownloadHandlerAssetBundleOperation(_fileSystem, _bundle, downloadParam);
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _downloadhanlderAssetBundleOp);
|
OperationSystem.StartOperation(_fileSystem.PackageName, _downloadhanlderAssetBundleOp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,44 +1,68 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DWRFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
|
internal class DWFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
|
RequestWebPackageVersion,
|
||||||
RequestWebPackageHash,
|
RequestWebPackageHash,
|
||||||
LoadWebPackageManifest,
|
LoadWebPackageManifest,
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly string _packageVersion;
|
|
||||||
private readonly int _timeout;
|
private readonly int _timeout;
|
||||||
private RequestWebRemotePackageHashOperation _requestWebPackageHashOp;
|
private RequestWebPackageVersionOperation _requestWebPackageVersionOp;
|
||||||
private LoadWebRemotePackageManifestOperation _loadWebPackageManifestOp;
|
private RequestWebPackageHashOperation _requestWebPackageHashOp;
|
||||||
|
private LoadWebPackageManifestOperation _loadWebPackageManifestOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
public DWRFSLoadPackageManifestOperation(DefaultWebRemoteFileSystem fileSystem, string packageVersion, int timeout)
|
public DWFSLoadPackageManifestOperation(DefaultWebFileSystem fileSystem, int timeout)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_packageVersion = packageVersion;
|
|
||||||
_timeout = timeout;
|
_timeout = timeout;
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
_steps = ESteps.RequestWebPackageHash;
|
_steps = ESteps.RequestWebPackageVersion;
|
||||||
}
|
}
|
||||||
internal override void InternalOnUpdate()
|
internal override void InternalOnUpdate()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (_steps == ESteps.RequestWebPackageVersion)
|
||||||
|
{
|
||||||
|
if (_requestWebPackageVersionOp == null)
|
||||||
|
{
|
||||||
|
_requestWebPackageVersionOp = new RequestWebPackageVersionOperation(_fileSystem, _timeout);
|
||||||
|
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_requestWebPackageVersionOp.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_requestWebPackageVersionOp.Status == EOperationStatus.Succeed)
|
||||||
|
{
|
||||||
|
_steps = ESteps.RequestWebPackageHash;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = _requestWebPackageVersionOp.Error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_steps == ESteps.RequestWebPackageHash)
|
if (_steps == ESteps.RequestWebPackageHash)
|
||||||
{
|
{
|
||||||
if (_requestWebPackageHashOp == null)
|
if (_requestWebPackageHashOp == null)
|
||||||
{
|
{
|
||||||
_requestWebPackageHashOp = new RequestWebRemotePackageHashOperation(_fileSystem, _packageVersion, _timeout);
|
string packageVersion = _requestWebPackageVersionOp.PackageVersion;
|
||||||
|
_requestWebPackageHashOp = new RequestWebPackageHashOperation(_fileSystem, packageVersion, _timeout);
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageHashOp);
|
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageHashOp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,8 +85,9 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_loadWebPackageManifestOp == null)
|
if (_loadWebPackageManifestOp == null)
|
||||||
{
|
{
|
||||||
|
string packageVersion = _requestWebPackageVersionOp.PackageVersion;
|
||||||
string packageHash = _requestWebPackageHashOp.PackageHash;
|
string packageHash = _requestWebPackageHashOp.PackageHash;
|
||||||
_loadWebPackageManifestOp = new LoadWebRemotePackageManifestOperation(_fileSystem, _packageVersion, packageHash);
|
_loadWebPackageManifestOp = new LoadWebPackageManifestOperation(_fileSystem, packageVersion, packageHash);
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _loadWebPackageManifestOp);
|
OperationSystem.StartOperation(_fileSystem.PackageName, _loadWebPackageManifestOp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DWSFSRequestPackageVersionOperation : FSRequestPackageVersionOperation
|
internal class DWFSRequestPackageVersionOperation : FSRequestPackageVersionOperation
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -10,13 +10,13 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly int _timeout;
|
private readonly int _timeout;
|
||||||
private RequestWebServerPackageVersionOperation _requestWebPackageVersionOp;
|
private RequestWebPackageVersionOperation _requestWebPackageVersionOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
|
||||||
internal DWSFSRequestPackageVersionOperation(DefaultWebServerFileSystem fileSystem, int timeout)
|
internal DWFSRequestPackageVersionOperation(DefaultWebFileSystem fileSystem, int timeout)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_timeout = timeout;
|
_timeout = timeout;
|
||||||
|
@ -34,7 +34,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (_requestWebPackageVersionOp == null)
|
if (_requestWebPackageVersionOp == null)
|
||||||
{
|
{
|
||||||
_requestWebPackageVersionOp = new RequestWebServerPackageVersionOperation(_fileSystem, _timeout);
|
_requestWebPackageVersionOp = new RequestWebPackageVersionOperation(_fileSystem, _timeout);
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp);
|
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,16 +5,16 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class DownloadHandlerAssetBundleOperation : DefaultDownloadFileOperation
|
internal class DownloadHandlerAssetBundleOperation : DefaultDownloadFileOperation
|
||||||
{
|
{
|
||||||
private readonly bool _disableUnityWebCache;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private DownloadHandlerAssetBundle _downloadhandler;
|
private DownloadHandlerAssetBundle _downloadhandler;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
public AssetBundle Result { private set; get; }
|
public AssetBundle Result { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
internal DownloadHandlerAssetBundleOperation(bool disableUnityWebCache, PackageBundle bundle, DownloadParam param) : base(bundle, param)
|
internal DownloadHandlerAssetBundleOperation(DefaultWebFileSystem fileSystem, PackageBundle bundle, DownloadParam param) : base(bundle, param)
|
||||||
{
|
{
|
||||||
_disableUnityWebCache = disableUnityWebCache;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
|
@ -113,7 +113,7 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
private DownloadHandlerAssetBundle CreateDownloadHandler()
|
private DownloadHandlerAssetBundle CreateDownloadHandler()
|
||||||
{
|
{
|
||||||
if (_disableUnityWebCache)
|
if (_fileSystem.DisableUnityWebCache)
|
||||||
{
|
{
|
||||||
var downloadhandler = new DownloadHandlerAssetBundle(_requestURL, 0);
|
var downloadhandler = new DownloadHandlerAssetBundle(_requestURL, 0);
|
||||||
#if UNITY_2020_3_OR_NEWER
|
#if UNITY_2020_3_OR_NEWER
|
|
@ -6,7 +6,7 @@ using UnityEngine;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal sealed class LoadWebServerCatalogFileOperation : AsyncOperationBase
|
internal sealed class LoadWebCatalogFileOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -15,7 +15,7 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -23,7 +23,7 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PackageVersion { private set; get; }
|
public string PackageVersion { private set; get; }
|
||||||
|
|
||||||
internal LoadWebServerCatalogFileOperation(DefaultWebServerFileSystem fileSystem)
|
internal LoadWebCatalogFileOperation(DefaultWebFileSystem fileSystem)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Failed to load web server catalog file : {catalogFilePath}";
|
Error = $"Failed to load web catalog file : {catalogFilePath}";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,14 +52,14 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Web server catalog file package name {catalog.PackageName} cannot match the file system package name {_fileSystem.PackageName}";
|
Error = $"Web catalog file package name {catalog.PackageName} cannot match the file system package name {_fileSystem.PackageName}";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PackageVersion = catalog.PackageVersion;
|
PackageVersion = catalog.PackageVersion;
|
||||||
foreach (var wrapper in catalog.Wrappers)
|
foreach (var wrapper in catalog.Wrappers)
|
||||||
{
|
{
|
||||||
var fileWrapper = new DefaultWebServerFileSystem.FileWrapper(wrapper.FileName);
|
var fileWrapper = new DefaultWebFileSystem.FileWrapper(wrapper.FileName);
|
||||||
_fileSystem.RecordFile(wrapper.BundleGUID, fileWrapper);
|
_fileSystem.RecordFile(wrapper.BundleGUID, fileWrapper);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class LoadWebServerPackageManifestOperation : AsyncOperationBase
|
internal class LoadWebPackageManifestOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,7 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly string _packageVersion;
|
private readonly string _packageVersion;
|
||||||
private readonly string _packageHash;
|
private readonly string _packageHash;
|
||||||
private UnityWebDataRequestOperation _webDataRequestOp;
|
private UnityWebDataRequestOperation _webDataRequestOp;
|
||||||
|
@ -25,7 +25,7 @@ namespace YooAsset
|
||||||
public PackageManifest Manifest { private set; get; }
|
public PackageManifest Manifest { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
internal LoadWebServerPackageManifestOperation(DefaultWebServerFileSystem fileSystem, string packageVersion, string packageHash)
|
internal LoadWebPackageManifestOperation(DefaultWebFileSystem fileSystem, string packageVersion, string packageHash)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_packageVersion = packageVersion;
|
_packageVersion = packageVersion;
|
||||||
|
@ -76,7 +76,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = "Failed to verify web server package manifest file!";
|
Error = "Failed to verify web package manifest file!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class RequestWebServerPackageHashOperation : AsyncOperationBase
|
internal class RequestWebPackageHashOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly string _packageVersion;
|
private readonly string _packageVersion;
|
||||||
private readonly int _timeout;
|
private readonly int _timeout;
|
||||||
private UnityWebTextRequestOperation _webTextRequestOp;
|
private UnityWebTextRequestOperation _webTextRequestOp;
|
||||||
|
@ -22,7 +22,7 @@ namespace YooAsset
|
||||||
public string PackageHash { private set; get; }
|
public string PackageHash { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
public RequestWebServerPackageHashOperation(DefaultWebServerFileSystem fileSystem, string packageVersion, int timeout)
|
public RequestWebPackageHashOperation(DefaultWebFileSystem fileSystem, string packageVersion, int timeout)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_packageVersion = packageVersion;
|
_packageVersion = packageVersion;
|
||||||
|
@ -58,7 +58,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Web server package hash file content is empty !";
|
Error = $"Web package hash file content is empty !";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class RequestWebServerPackageVersionOperation : AsyncOperationBase
|
internal class RequestWebPackageVersionOperation : AsyncOperationBase
|
||||||
{
|
{
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
|
@ -10,7 +10,7 @@ namespace YooAsset
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
private readonly DefaultWebFileSystem _fileSystem;
|
||||||
private readonly int _timeout;
|
private readonly int _timeout;
|
||||||
private UnityWebTextRequestOperation _webTextRequestOp;
|
private UnityWebTextRequestOperation _webTextRequestOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
@ -21,7 +21,7 @@ namespace YooAsset
|
||||||
public string PackageVersion { private set; get; }
|
public string PackageVersion { private set; get; }
|
||||||
|
|
||||||
|
|
||||||
internal RequestWebServerPackageVersionOperation(DefaultWebServerFileSystem fileSystem, int timeout)
|
internal RequestWebPackageVersionOperation(DefaultWebFileSystem fileSystem, int timeout)
|
||||||
{
|
{
|
||||||
_fileSystem = fileSystem;
|
_fileSystem = fileSystem;
|
||||||
_timeout = timeout;
|
_timeout = timeout;
|
||||||
|
@ -55,7 +55,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Web server package version file content is empty !";
|
Error = $"Web package version file content is empty !";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 2bf1355f3cbe3d543b53bd9553bba02c
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,162 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.IO;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Web文件系统
|
|
||||||
/// </summary>
|
|
||||||
internal class DefaultWebRemoteFileSystem : IFileSystem
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 包裹名称
|
|
||||||
/// </summary>
|
|
||||||
public string PackageName { private set; get; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文件根目录
|
|
||||||
/// </summary>
|
|
||||||
public string FileRoot
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 文件数量
|
|
||||||
/// </summary>
|
|
||||||
public int FileCount
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 自定义参数
|
|
||||||
/// <summary>
|
|
||||||
/// 禁用Unity的网络缓存
|
|
||||||
/// </summary>
|
|
||||||
public bool DisableUnityWebCache { private set; get; } = false;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 自定义参数:跨域下载服务接口
|
|
||||||
/// </summary>
|
|
||||||
public IRemoteServices RemoteServices { private set; get; } = null;
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
|
|
||||||
public DefaultWebRemoteFileSystem()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync()
|
|
||||||
{
|
|
||||||
var operation = new DWRFSInitializeOperation(this);
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual FSLoadPackageManifestOperation LoadPackageManifestAsync(string packageVersion, int timeout)
|
|
||||||
{
|
|
||||||
var operation = new DWRFSLoadPackageManifestOperation(this, packageVersion, timeout);
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual FSRequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks, int timeout)
|
|
||||||
{
|
|
||||||
var operation = new DWRFSRequestPackageVersionOperation(this, appendTimeTicks, timeout);
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual FSClearAllBundleFilesOperation ClearAllBundleFilesAsync()
|
|
||||||
{
|
|
||||||
var operation = new FSClearAllBundleFilesCompleteOperation();
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual FSClearUnusedBundleFilesOperation ClearUnusedBundleFilesAsync(PackageManifest manifest)
|
|
||||||
{
|
|
||||||
var operation = new FSClearUnusedBundleFilesCompleteOperation();
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadParam param)
|
|
||||||
{
|
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
|
||||||
public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
var operation = new DWRFSLoadAssetBundleOperation(this, bundle);
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
public virtual void UnloadBundleFile(PackageBundle bundle, object result)
|
|
||||||
{
|
|
||||||
AssetBundle assetBundle = result as AssetBundle;
|
|
||||||
if (assetBundle == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (assetBundle != null)
|
|
||||||
assetBundle.Unload(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual void SetParameter(string name, object value)
|
|
||||||
{
|
|
||||||
if (name == FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE)
|
|
||||||
{
|
|
||||||
DisableUnityWebCache = (bool)value;
|
|
||||||
}
|
|
||||||
else if (name == FileSystemParametersDefine.REMOTE_SERVICES)
|
|
||||||
{
|
|
||||||
RemoteServices = (IRemoteServices)value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
YooLogger.Warning($"Invalid parameter : {name}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public virtual void OnCreate(string packageName, string rootDirectory)
|
|
||||||
{
|
|
||||||
PackageName = packageName;
|
|
||||||
}
|
|
||||||
public virtual void OnUpdate()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual bool Belong(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public virtual bool Exists(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
public virtual bool NeedDownload(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
public virtual bool NeedUnpack(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
public virtual bool NeedImport(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual byte[] ReadFileData(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
|
||||||
public virtual string ReadFileText(PackageBundle bundle)
|
|
||||||
{
|
|
||||||
throw new System.NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 内部方法
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f511714bfc7c1104aa6200ee0826e9e3
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 1086ea45b8b84fe43ba1ef69b4f813dc
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,20 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class DWRFSInitializeOperation : FSInitializeFileSystemOperation
|
|
||||||
{
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
|
|
||||||
public DWRFSInitializeOperation(DefaultWebRemoteFileSystem fileSystem)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f30b92e4f3b9e594ca0481128b56cc21
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,83 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class DWRFSLoadAssetBundleOperation : FSLoadBundleOperation
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
DownloadFile,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
private readonly PackageBundle _bundle;
|
|
||||||
private DownloadHandlerAssetBundleOperation _downloadhanlderAssetBundleOp;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
|
|
||||||
internal DWRFSLoadAssetBundleOperation(DefaultWebRemoteFileSystem fileSystem, PackageBundle bundle)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_bundle = bundle;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_steps = ESteps.DownloadFile;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.DownloadFile)
|
|
||||||
{
|
|
||||||
if (_downloadhanlderAssetBundleOp == null)
|
|
||||||
{
|
|
||||||
DownloadParam downloadParam = new DownloadParam(int.MaxValue, 60);
|
|
||||||
downloadParam.MainURL = _fileSystem.RemoteServices.GetRemoteMainURL(_bundle.FileName);
|
|
||||||
downloadParam.FallbackURL = _fileSystem.RemoteServices.GetRemoteFallbackURL(_bundle.FileName);
|
|
||||||
_downloadhanlderAssetBundleOp = new DownloadHandlerAssetBundleOperation(_fileSystem.DisableUnityWebCache, _bundle, downloadParam);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _downloadhanlderAssetBundleOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
DownloadProgress = _downloadhanlderAssetBundleOp.DownloadProgress;
|
|
||||||
DownloadedBytes = _downloadhanlderAssetBundleOp.DownloadedBytes;
|
|
||||||
Progress = _downloadhanlderAssetBundleOp.Progress;
|
|
||||||
if (_downloadhanlderAssetBundleOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_downloadhanlderAssetBundleOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Result = _downloadhanlderAssetBundleOp.Result;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _downloadhanlderAssetBundleOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
internal override void InternalWaitForAsyncComplete()
|
|
||||||
{
|
|
||||||
if (_steps != ESteps.Done)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = "WebGL platform not support sync load method !";
|
|
||||||
UnityEngine.Debug.LogError(Error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public override void AbortDownloadOperation()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.DownloadFile)
|
|
||||||
{
|
|
||||||
if (_downloadhanlderAssetBundleOp != null)
|
|
||||||
_downloadhanlderAssetBundleOp.SetAbort();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 270b776fd379b0f45bc602c845720733
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 2611f6fbc97de1a4d9a38116045d4faf
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,62 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class DWRFSRequestPackageVersionOperation : FSRequestPackageVersionOperation
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
RequestPackageVersion,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
private readonly bool _appendTimeTicks;
|
|
||||||
private readonly int _timeout;
|
|
||||||
private RequestWebRemotePackageVersionOperation _requestWebPackageVersionOp;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
|
|
||||||
internal DWRFSRequestPackageVersionOperation(DefaultWebRemoteFileSystem fileSystem, bool appendTimeTicks, int timeout)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_appendTimeTicks = appendTimeTicks;
|
|
||||||
_timeout = timeout;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_steps = ESteps.RequestPackageVersion;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.RequestPackageVersion)
|
|
||||||
{
|
|
||||||
if (_requestWebPackageVersionOp == null)
|
|
||||||
{
|
|
||||||
_requestWebPackageVersionOp = new RequestWebRemotePackageVersionOperation(_fileSystem, _appendTimeTicks, _timeout);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageVersionOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
Progress = _requestWebPackageVersionOp.Progress;
|
|
||||||
if (_requestWebPackageVersionOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_requestWebPackageVersionOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
PackageVersion = _requestWebPackageVersionOp.PackageVersion;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _requestWebPackageVersionOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: d1c5335974b2432458ed902e20cc954e
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 9be3163f53935514d9e64e09686db957
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,122 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class LoadWebRemotePackageManifestOperation : AsyncOperationBase
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
RequestFileData,
|
|
||||||
VerifyFileData,
|
|
||||||
LoadManifest,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
private readonly string _packageVersion;
|
|
||||||
private readonly string _packageHash;
|
|
||||||
private UnityWebDataRequestOperation _webDataRequestOp;
|
|
||||||
private DeserializeManifestOperation _deserializer;
|
|
||||||
private int _requestCount = 0;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 包裹清单
|
|
||||||
/// </summary>
|
|
||||||
public PackageManifest Manifest { private set; get; }
|
|
||||||
|
|
||||||
|
|
||||||
internal LoadWebRemotePackageManifestOperation(DefaultWebRemoteFileSystem fileSystem, string packageVersion, string packageHash)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_packageVersion = packageVersion;
|
|
||||||
_packageHash = packageHash;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_requestCount = WebRequestCounter.GetRequestFailedCount(_fileSystem.PackageName, nameof(LoadWebRemotePackageManifestOperation));
|
|
||||||
_steps = ESteps.RequestFileData;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.RequestFileData)
|
|
||||||
{
|
|
||||||
if (_webDataRequestOp == null)
|
|
||||||
{
|
|
||||||
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(_fileSystem.PackageName, _packageVersion);
|
|
||||||
string url = GetWebRequestURL(fileName);
|
|
||||||
_webDataRequestOp = new UnityWebDataRequestOperation(url);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _webDataRequestOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_webDataRequestOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_webDataRequestOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.VerifyFileData;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _webDataRequestOp.Error;
|
|
||||||
WebRequestCounter.RecordRequestFailed(_fileSystem.PackageName, nameof(LoadWebRemotePackageManifestOperation));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.VerifyFileData)
|
|
||||||
{
|
|
||||||
string fileHash = HashUtility.BytesMD5(_webDataRequestOp.Result);
|
|
||||||
if (fileHash == _packageHash)
|
|
||||||
{
|
|
||||||
_steps = ESteps.LoadManifest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = "Failed to verify web remote package manifest file!";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.LoadManifest)
|
|
||||||
{
|
|
||||||
if (_deserializer == null)
|
|
||||||
{
|
|
||||||
_deserializer = new DeserializeManifestOperation(_webDataRequestOp.Result);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _deserializer);
|
|
||||||
}
|
|
||||||
|
|
||||||
Progress = _deserializer.Progress;
|
|
||||||
if (_deserializer.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_deserializer.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Manifest = _deserializer.Manifest;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _deserializer.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetWebRequestURL(string fileName)
|
|
||||||
{
|
|
||||||
// 轮流返回请求地址
|
|
||||||
if (_requestCount % 2 == 0)
|
|
||||||
return _fileSystem.RemoteServices.GetRemoteMainURL(fileName);
|
|
||||||
else
|
|
||||||
return _fileSystem.RemoteServices.GetRemoteFallbackURL(fileName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 8ac57bde14f2e1a4e9323751a7157ed7
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,90 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class RequestWebRemotePackageHashOperation : AsyncOperationBase
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
RequestPackageHash,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
private readonly string _packageVersion;
|
|
||||||
private readonly int _timeout;
|
|
||||||
private UnityWebTextRequestOperation _webTextRequestOp;
|
|
||||||
private int _requestCount = 0;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 包裹哈希值
|
|
||||||
/// </summary>
|
|
||||||
public string PackageHash { private set; get; }
|
|
||||||
|
|
||||||
|
|
||||||
public RequestWebRemotePackageHashOperation(DefaultWebRemoteFileSystem fileSystem, string packageVersion, int timeout)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_packageVersion = packageVersion;
|
|
||||||
_timeout = timeout;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_requestCount = WebRequestCounter.GetRequestFailedCount(_fileSystem.PackageName, nameof(RequestWebRemotePackageHashOperation));
|
|
||||||
_steps = ESteps.RequestPackageHash;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.RequestPackageHash)
|
|
||||||
{
|
|
||||||
if (_webTextRequestOp == null)
|
|
||||||
{
|
|
||||||
string fileName = YooAssetSettingsData.GetPackageHashFileName(_fileSystem.PackageName, _packageVersion);
|
|
||||||
string url = GetWebRequestURL(fileName);
|
|
||||||
_webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
Progress = _webTextRequestOp.Progress;
|
|
||||||
if (_webTextRequestOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_webTextRequestOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
PackageHash = _webTextRequestOp.Result;
|
|
||||||
if (string.IsNullOrEmpty(PackageHash))
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = $"Web remote package hash file content is empty !";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _webTextRequestOp.Error;
|
|
||||||
WebRequestCounter.RecordRequestFailed(_fileSystem.PackageName, nameof(RequestWebRemotePackageHashOperation));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetWebRequestURL(string fileName)
|
|
||||||
{
|
|
||||||
// 轮流返回请求地址
|
|
||||||
if (_requestCount % 2 == 0)
|
|
||||||
return _fileSystem.RemoteServices.GetRemoteMainURL(fileName);
|
|
||||||
else
|
|
||||||
return _fileSystem.RemoteServices.GetRemoteFallbackURL(fileName);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: f2a5bb0106a45e540a43a05b72a75bcd
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,98 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class RequestWebRemotePackageVersionOperation : AsyncOperationBase
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
RequestPackageVersion,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebRemoteFileSystem _fileSystem;
|
|
||||||
private readonly bool _appendTimeTicks;
|
|
||||||
private readonly int _timeout;
|
|
||||||
private UnityWebTextRequestOperation _webTextRequestOp;
|
|
||||||
private int _requestCount = 0;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 包裹版本
|
|
||||||
/// </summary>
|
|
||||||
public string PackageVersion { private set; get; }
|
|
||||||
|
|
||||||
|
|
||||||
internal RequestWebRemotePackageVersionOperation(DefaultWebRemoteFileSystem fileSystem, bool appendTimeTicks, int timeout)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_appendTimeTicks = appendTimeTicks;
|
|
||||||
_timeout = timeout;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_requestCount = WebRequestCounter.GetRequestFailedCount(_fileSystem.PackageName, nameof(RequestWebRemotePackageVersionOperation));
|
|
||||||
_steps = ESteps.RequestPackageVersion;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.RequestPackageVersion)
|
|
||||||
{
|
|
||||||
if (_webTextRequestOp == null)
|
|
||||||
{
|
|
||||||
string fileName = YooAssetSettingsData.GetPackageVersionFileName(_fileSystem.PackageName);
|
|
||||||
string url = GetWebRequestURL(fileName);
|
|
||||||
_webTextRequestOp = new UnityWebTextRequestOperation(url, _timeout);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _webTextRequestOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
Progress = _webTextRequestOp.Progress;
|
|
||||||
if (_webTextRequestOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_webTextRequestOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
PackageVersion = _webTextRequestOp.Result;
|
|
||||||
if (string.IsNullOrEmpty(PackageVersion))
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = $"Web remote package version file content is empty !";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _webTextRequestOp.Error;
|
|
||||||
WebRequestCounter.RecordRequestFailed(_fileSystem.PackageName, nameof(RequestWebRemotePackageVersionOperation));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private string GetWebRequestURL(string fileName)
|
|
||||||
{
|
|
||||||
string url;
|
|
||||||
|
|
||||||
// 轮流返回请求地址
|
|
||||||
if (_requestCount % 2 == 0)
|
|
||||||
url = _fileSystem.RemoteServices.GetRemoteMainURL(fileName);
|
|
||||||
else
|
|
||||||
url = _fileSystem.RemoteServices.GetRemoteFallbackURL(fileName);
|
|
||||||
|
|
||||||
// 在URL末尾添加时间戳
|
|
||||||
if (_appendTimeTicks)
|
|
||||||
return $"{url}?{System.DateTime.UtcNow.Ticks}";
|
|
||||||
else
|
|
||||||
return url;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 9a38597f546a46a429b24abd595c76e4
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,88 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class DWSFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
|
|
||||||
{
|
|
||||||
private enum ESteps
|
|
||||||
{
|
|
||||||
None,
|
|
||||||
RequestWebPackageHash,
|
|
||||||
LoadWebPackageManifest,
|
|
||||||
Done,
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly DefaultWebServerFileSystem _fileSystem;
|
|
||||||
private readonly string _packageVersion;
|
|
||||||
private readonly int _timeout;
|
|
||||||
private RequestWebServerPackageHashOperation _requestWebPackageHashOp;
|
|
||||||
private LoadWebServerPackageManifestOperation _loadWebPackageManifestOp;
|
|
||||||
private ESteps _steps = ESteps.None;
|
|
||||||
|
|
||||||
|
|
||||||
public DWSFSLoadPackageManifestOperation(DefaultWebServerFileSystem fileSystem, string packageVersion, int timeout)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_packageVersion = packageVersion;
|
|
||||||
_timeout = timeout;
|
|
||||||
}
|
|
||||||
internal override void InternalOnStart()
|
|
||||||
{
|
|
||||||
_steps = ESteps.RequestWebPackageHash;
|
|
||||||
}
|
|
||||||
internal override void InternalOnUpdate()
|
|
||||||
{
|
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_steps == ESteps.RequestWebPackageHash)
|
|
||||||
{
|
|
||||||
if (_requestWebPackageHashOp == null)
|
|
||||||
{
|
|
||||||
_requestWebPackageHashOp = new RequestWebServerPackageHashOperation(_fileSystem, _packageVersion, _timeout);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _requestWebPackageHashOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_requestWebPackageHashOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_requestWebPackageHashOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.LoadWebPackageManifest;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _requestWebPackageHashOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.LoadWebPackageManifest)
|
|
||||||
{
|
|
||||||
if (_loadWebPackageManifestOp == null)
|
|
||||||
{
|
|
||||||
string packageHash = _requestWebPackageHashOp.PackageHash;
|
|
||||||
_loadWebPackageManifestOp = new LoadWebServerPackageManifestOperation(_fileSystem, _packageVersion, packageHash);
|
|
||||||
OperationSystem.StartOperation(_fileSystem.PackageName, _loadWebPackageManifestOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
Progress = _loadWebPackageManifestOp.Progress;
|
|
||||||
if (_loadWebPackageManifestOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_loadWebPackageManifestOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Manifest = _loadWebPackageManifestOp.Manifest;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _loadWebPackageManifestOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,7 +3,7 @@ using System.IO;
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
internal class FileVerifyHelper
|
internal class FileSystemHelper
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 文件校验
|
/// 文件校验
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
namespace YooAsset
|
namespace YooAsset
|
||||||
{
|
{
|
||||||
public class FileSystemParametersDefine
|
internal class FileSystemParametersDefine
|
||||||
{
|
{
|
||||||
public const string FILE_VERIFY_LEVEL = "FILE_VERIFY_LEVEL";
|
public const string FILE_VERIFY_LEVEL = "FILE_VERIFY_LEVEL";
|
||||||
public const string REMOTE_SERVICES = "REMOTE_SERVICES";
|
public const string REMOTE_SERVICES = "REMOTE_SERVICES";
|
||||||
|
@ -11,7 +11,5 @@ namespace YooAsset
|
||||||
public const string DISABLE_UNITY_WEB_CACHE = "DISABLE_UNITY_WEB_CACHE";
|
public const string DISABLE_UNITY_WEB_CACHE = "DISABLE_UNITY_WEB_CACHE";
|
||||||
public const string RESUME_DOWNLOAD_MINMUM_SIZE = "RESUME_DOWNLOAD_MINMUM_SIZE";
|
public const string RESUME_DOWNLOAD_MINMUM_SIZE = "RESUME_DOWNLOAD_MINMUM_SIZE";
|
||||||
public const string RESUME_DOWNLOAD_RESPONSE_CODES = "RESUME_DOWNLOAD_RESPONSE_CODES";
|
public const string RESUME_DOWNLOAD_RESPONSE_CODES = "RESUME_DOWNLOAD_RESPONSE_CODES";
|
||||||
public const string ASYNC_SIMULATE_MIN_FRAME = "ASYNC_SIMULATE_MIN_FRAME";
|
|
||||||
public const string ASYNC_SIMULATE_MAX_FRAME = "ASYNC_SIMULATE_MAX_FRAME";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -165,30 +165,16 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 创建默认的WebServer文件系统参数
|
/// 创建默认的Web文件系统参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
||||||
public static FileSystemParameters CreateDefaultWebServerFileSystemParameters(bool disableUnityWebCache = false)
|
public static FileSystemParameters CreateDefaultWebFileSystemParameters(bool disableUnityWebCache = false)
|
||||||
{
|
{
|
||||||
string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
|
string fileSystemClass = typeof(DefaultWebFileSystem).FullName;
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
|
var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
|
||||||
fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
|
fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
|
||||||
return fileSystemParams;
|
return fileSystemParams;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 创建默认的WebRemote文件系统参数
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="remoteServices">远端资源地址查询服务类</param>
|
|
||||||
/// <param name="disableUnityWebCache">禁用Unity的网络缓存</param>
|
|
||||||
public static FileSystemParameters CreateDefaultWebRemoteFileSystemParameters(IRemoteServices remoteServices, bool disableUnityWebCache = false)
|
|
||||||
{
|
|
||||||
string fileSystemClass = typeof(DefaultWebServerFileSystem).FullName;
|
|
||||||
var fileSystemParams = new FileSystemParameters(fileSystemClass, null);
|
|
||||||
fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
|
|
||||||
fileSystemParams.AddParameter(FileSystemParametersDefine.DISABLE_UNITY_WEB_CACHE, disableUnityWebCache);
|
|
||||||
return fileSystemParams;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -220,6 +206,7 @@ namespace YooAsset
|
||||||
public class HostPlayModeParameters : InitializeParameters
|
public class HostPlayModeParameters : InitializeParameters
|
||||||
{
|
{
|
||||||
public FileSystemParameters BuildinFileSystemParameters;
|
public FileSystemParameters BuildinFileSystemParameters;
|
||||||
|
public FileSystemParameters DeliveryFileSystemParameters;
|
||||||
public FileSystemParameters CacheFileSystemParameters;
|
public FileSystemParameters CacheFileSystemParameters;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,7 +215,6 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class WebPlayModeParameters : InitializeParameters
|
public class WebPlayModeParameters : InitializeParameters
|
||||||
{
|
{
|
||||||
public FileSystemParameters WebServerFileSystemParameters;
|
public FileSystemParameters WebFileSystemParameters;
|
||||||
public FileSystemParameters WebRemoteFileSystemParameters;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -147,7 +147,7 @@ namespace YooAsset
|
||||||
|
|
||||||
// 当执行次数用完时
|
// 当执行次数用完时
|
||||||
_whileFrame--;
|
_whileFrame--;
|
||||||
if (_whileFrame <= 0)
|
if (_whileFrame == 0)
|
||||||
{
|
{
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = $"Operation {this.GetType().Name} failed to wait for async complete !";
|
Error = $"Operation {this.GetType().Name} failed to wait for async complete !";
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: a9ca0d0d29eb5294b9c6926c6a09e76b
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -1,15 +0,0 @@
|
||||||
|
|
||||||
namespace YooAsset
|
|
||||||
{
|
|
||||||
internal class VirtualBundle
|
|
||||||
{
|
|
||||||
private readonly IFileSystem _fileSystem;
|
|
||||||
private readonly PackageBundle _packageBundle;
|
|
||||||
|
|
||||||
internal VirtualBundle(IFileSystem fileSystem, PackageBundle packageBundle)
|
|
||||||
{
|
|
||||||
_fileSystem = fileSystem;
|
|
||||||
_packageBundle = packageBundle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,11 +0,0 @@
|
||||||
fileFormatVersion: 2
|
|
||||||
guid: 822bb85f05144d842977dda341174db2
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
|
@ -69,9 +69,6 @@ namespace YooAsset
|
||||||
if (_loadBundleOp == null)
|
if (_loadBundleOp == null)
|
||||||
_loadBundleOp = BundleFileInfo.LoadBundleFile();
|
_loadBundleOp = BundleFileInfo.LoadBundleFile();
|
||||||
|
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
_loadBundleOp.WaitForAsyncComplete();
|
|
||||||
|
|
||||||
DownloadProgress = _loadBundleOp.DownloadProgress;
|
DownloadProgress = _loadBundleOp.DownloadProgress;
|
||||||
DownloadedBytes = _loadBundleOp.DownloadedBytes;
|
DownloadedBytes = _loadBundleOp.DownloadedBytes;
|
||||||
if (_loadBundleOp.IsDone == false)
|
if (_loadBundleOp.IsDone == false)
|
||||||
|
@ -79,18 +76,9 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_loadBundleOp.Status == EOperationStatus.Succeed)
|
if (_loadBundleOp.Status == EOperationStatus.Succeed)
|
||||||
{
|
{
|
||||||
if (_loadBundleOp.Result == null)
|
_steps = ESteps.Done;
|
||||||
{
|
Result = _loadBundleOp.Result;
|
||||||
_steps = ESteps.Done;
|
Status = EOperationStatus.Succeed;
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = $"The bundle loader result is null ! {BundleFileInfo.Bundle.BundleName}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Result = _loadBundleOp.Result;
|
|
||||||
Status = EOperationStatus.Succeed;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -104,6 +92,9 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
if (_loadBundleOp != null)
|
||||||
|
_loadBundleOp.WaitForAsyncComplete();
|
||||||
|
|
||||||
if (ExecuteWhileDone())
|
if (ExecuteWhileDone())
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
|
|
@ -36,14 +36,6 @@ namespace YooAsset
|
||||||
|
|
||||||
if (_steps == ESteps.CheckDepend)
|
if (_steps == ESteps.CheckDepend)
|
||||||
{
|
{
|
||||||
if (IsWaitForAsyncComplete)
|
|
||||||
{
|
|
||||||
foreach (var loader in Depends)
|
|
||||||
{
|
|
||||||
loader.WaitForAsyncComplete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var loader in Depends)
|
foreach (var loader in Depends)
|
||||||
{
|
{
|
||||||
if (loader.IsDone == false)
|
if (loader.IsDone == false)
|
||||||
|
@ -81,6 +73,11 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
|
foreach (var loader in Depends)
|
||||||
|
{
|
||||||
|
loader.WaitForAsyncComplete();
|
||||||
|
}
|
||||||
|
|
||||||
if (ExecuteWhileDone())
|
if (ExecuteWhileDone())
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
|
|
|
@ -96,7 +96,6 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
if (LoadDependBundleFileOp != null)
|
if (LoadDependBundleFileOp != null)
|
||||||
LoadDependBundleFileOp.WaitForAsyncComplete();
|
LoadDependBundleFileOp.WaitForAsyncComplete();
|
||||||
|
|
||||||
if (LoadBundleFileOp != null)
|
if (LoadBundleFileOp != null)
|
||||||
LoadBundleFileOp.WaitForAsyncComplete();
|
LoadBundleFileOp.WaitForAsyncComplete();
|
||||||
|
|
||||||
|
|
|
@ -42,7 +42,6 @@ namespace YooAsset
|
||||||
buffer.WriteUTF8(manifest.BuildPipeline);
|
buffer.WriteUTF8(manifest.BuildPipeline);
|
||||||
buffer.WriteUTF8(manifest.PackageName);
|
buffer.WriteUTF8(manifest.PackageName);
|
||||||
buffer.WriteUTF8(manifest.PackageVersion);
|
buffer.WriteUTF8(manifest.PackageVersion);
|
||||||
buffer.WriteUTF8(manifest.PackageNote);
|
|
||||||
|
|
||||||
// 写入资源列表
|
// 写入资源列表
|
||||||
buffer.WriteInt32(manifest.AssetList.Count);
|
buffer.WriteInt32(manifest.AssetList.Count);
|
||||||
|
@ -114,7 +113,6 @@ namespace YooAsset
|
||||||
manifest.BuildPipeline = buffer.ReadUTF8();
|
manifest.BuildPipeline = buffer.ReadUTF8();
|
||||||
manifest.PackageName = buffer.ReadUTF8();
|
manifest.PackageName = buffer.ReadUTF8();
|
||||||
manifest.PackageVersion = buffer.ReadUTF8();
|
manifest.PackageVersion = buffer.ReadUTF8();
|
||||||
manifest.PackageNote = buffer.ReadUTF8();
|
|
||||||
|
|
||||||
// 检测配置
|
// 检测配置
|
||||||
if (manifest.EnableAddressable && manifest.LocationToLower)
|
if (manifest.EnableAddressable && manifest.LocationToLower)
|
||||||
|
|
|
@ -171,9 +171,9 @@ namespace YooAsset
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
CreateBuildinFileSystem,
|
CreateFileSystem,
|
||||||
InitBuildinFileSystem,
|
InitBuildinFileSystem,
|
||||||
CreateCacheFileSystem,
|
InitDeliveryFileSystem,
|
||||||
InitCacheFileSystem,
|
InitCacheFileSystem,
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
@ -181,6 +181,7 @@ namespace YooAsset
|
||||||
private readonly HostPlayModeImpl _impl;
|
private readonly HostPlayModeImpl _impl;
|
||||||
private readonly HostPlayModeParameters _parameters;
|
private readonly HostPlayModeParameters _parameters;
|
||||||
private FSInitializeFileSystemOperation _initBuildinFileSystemOp;
|
private FSInitializeFileSystemOperation _initBuildinFileSystemOp;
|
||||||
|
private FSInitializeFileSystemOperation _initDeliveryFileSystemOp;
|
||||||
private FSInitializeFileSystemOperation _initCacheFileSystemOp;
|
private FSInitializeFileSystemOperation _initCacheFileSystemOp;
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
|
@ -191,55 +192,14 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
_steps = ESteps.CreateBuildinFileSystem;
|
_steps = ESteps.CreateFileSystem;
|
||||||
}
|
}
|
||||||
internal override void InternalOnUpdate()
|
internal override void InternalOnUpdate()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_steps == ESteps.CreateBuildinFileSystem)
|
if (_steps == ESteps.CreateFileSystem)
|
||||||
{
|
|
||||||
if (_parameters.BuildinFileSystemParameters == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.CreateCacheFileSystem;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
|
|
||||||
if (_impl.BuildinFileSystem == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = "Failed to create buildin file system";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_steps = ESteps.InitBuildinFileSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.InitBuildinFileSystem)
|
|
||||||
{
|
|
||||||
if (_initBuildinFileSystemOp == null)
|
|
||||||
_initBuildinFileSystemOp = _impl.BuildinFileSystem.InitializeFileSystemAsync();
|
|
||||||
|
|
||||||
Progress = _initBuildinFileSystemOp.Progress;
|
|
||||||
if (_initBuildinFileSystemOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_initBuildinFileSystemOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.CreateCacheFileSystem;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _initBuildinFileSystemOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.CreateCacheFileSystem)
|
|
||||||
{
|
{
|
||||||
if (_parameters.CacheFileSystemParameters == null)
|
if (_parameters.CacheFileSystemParameters == null)
|
||||||
{
|
{
|
||||||
|
@ -249,6 +209,30 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (_parameters.BuildinFileSystemParameters != null)
|
||||||
|
{
|
||||||
|
_impl.BuildinFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.BuildinFileSystemParameters);
|
||||||
|
if (_impl.BuildinFileSystem == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = "Failed to create buildin file system";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_parameters.DeliveryFileSystemParameters != null)
|
||||||
|
{
|
||||||
|
_impl.DeliveryFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.DeliveryFileSystemParameters);
|
||||||
|
if (_impl.DeliveryFileSystem == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = "Failed to create delivery file system";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_impl.CacheFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.CacheFileSystemParameters);
|
_impl.CacheFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.CacheFileSystemParameters);
|
||||||
if (_impl.CacheFileSystem == null)
|
if (_impl.CacheFileSystem == null)
|
||||||
{
|
{
|
||||||
|
@ -258,7 +242,63 @@ namespace YooAsset
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_steps = ESteps.InitCacheFileSystem;
|
_steps = ESteps.InitBuildinFileSystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.InitBuildinFileSystem)
|
||||||
|
{
|
||||||
|
// 注意:内置文件系统可以为空
|
||||||
|
if (_impl.BuildinFileSystem == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.InitDeliveryFileSystem;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_initBuildinFileSystemOp == null)
|
||||||
|
_initBuildinFileSystemOp = _impl.BuildinFileSystem.InitializeFileSystemAsync();
|
||||||
|
|
||||||
|
Progress = _initBuildinFileSystemOp.Progress;
|
||||||
|
if (_initBuildinFileSystemOp.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_initBuildinFileSystemOp.Status == EOperationStatus.Succeed)
|
||||||
|
{
|
||||||
|
_steps = ESteps.InitDeliveryFileSystem;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = _initBuildinFileSystemOp.Error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_steps == ESteps.InitDeliveryFileSystem)
|
||||||
|
{
|
||||||
|
// 注意:分发文件系统可以为空
|
||||||
|
if (_impl.DeliveryFileSystem == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.InitCacheFileSystem;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Progress = _initDeliveryFileSystemOp.Progress;
|
||||||
|
if (_initDeliveryFileSystemOp == null)
|
||||||
|
_initDeliveryFileSystemOp = _impl.DeliveryFileSystem.InitializeFileSystemAsync();
|
||||||
|
|
||||||
|
if (_initDeliveryFileSystemOp.IsDone == false)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (_initDeliveryFileSystemOp.Status == EOperationStatus.Succeed)
|
||||||
|
{
|
||||||
|
_steps = ESteps.InitCacheFileSystem;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = _initDeliveryFileSystemOp.Error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_steps == ESteps.InitCacheFileSystem)
|
if (_steps == ESteps.InitCacheFileSystem)
|
||||||
|
@ -293,18 +333,14 @@ namespace YooAsset
|
||||||
private enum ESteps
|
private enum ESteps
|
||||||
{
|
{
|
||||||
None,
|
None,
|
||||||
CreateWebServerFileSystem,
|
CreateFileSystem,
|
||||||
InitWebServerFileSystem,
|
InitWebFileSystem,
|
||||||
CreateWebRemoteFileSystem,
|
|
||||||
InitWebRemoteFileSystem,
|
|
||||||
CheckResult,
|
|
||||||
Done,
|
Done,
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly WebPlayModeImpl _impl;
|
private readonly WebPlayModeImpl _impl;
|
||||||
private readonly WebPlayModeParameters _parameters;
|
private readonly WebPlayModeParameters _parameters;
|
||||||
private FSInitializeFileSystemOperation _initWebServerFileSystemOp;
|
private FSInitializeFileSystemOperation _initWebFileSystemOp;
|
||||||
private FSInitializeFileSystemOperation _initWebRemoteFileSystemOp;
|
|
||||||
private ESteps _steps = ESteps.None;
|
private ESteps _steps = ESteps.None;
|
||||||
|
|
||||||
internal WebPlayModeInitializationOperation(WebPlayModeImpl impl, WebPlayModeParameters parameters)
|
internal WebPlayModeInitializationOperation(WebPlayModeImpl impl, WebPlayModeParameters parameters)
|
||||||
|
@ -314,108 +350,55 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
internal override void InternalOnStart()
|
internal override void InternalOnStart()
|
||||||
{
|
{
|
||||||
_steps = ESteps.CreateWebServerFileSystem;
|
_steps = ESteps.CreateFileSystem;
|
||||||
}
|
}
|
||||||
internal override void InternalOnUpdate()
|
internal override void InternalOnUpdate()
|
||||||
{
|
{
|
||||||
if (_steps == ESteps.None || _steps == ESteps.Done)
|
if (_steps == ESteps.None || _steps == ESteps.Done)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_steps == ESteps.CreateWebServerFileSystem)
|
if (_steps == ESteps.CreateFileSystem)
|
||||||
{
|
{
|
||||||
if (_parameters.WebServerFileSystemParameters == null)
|
if (_parameters.WebFileSystemParameters == null)
|
||||||
{
|
|
||||||
_steps = ESteps.CreateWebRemoteFileSystem;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_impl.WebServerFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebServerFileSystemParameters);
|
|
||||||
if (_impl.WebServerFileSystem == null)
|
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Failed;
|
Status = EOperationStatus.Failed;
|
||||||
Error = "Failed to create web server file system";
|
Error = "Web file system parameters is null";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_steps = ESteps.InitWebServerFileSystem;
|
_impl.WebFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebFileSystemParameters);
|
||||||
|
if (_impl.WebFileSystem == null)
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = "Failed to create web file system";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_steps = ESteps.InitWebFileSystem;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_steps == ESteps.InitWebServerFileSystem)
|
if (_steps == ESteps.InitWebFileSystem)
|
||||||
{
|
{
|
||||||
if (_initWebServerFileSystemOp == null)
|
if (_initWebFileSystemOp == null)
|
||||||
_initWebServerFileSystemOp = _impl.WebServerFileSystem.InitializeFileSystemAsync();
|
_initWebFileSystemOp = _impl.WebFileSystem.InitializeFileSystemAsync();
|
||||||
|
|
||||||
Progress = _initWebServerFileSystemOp.Progress;
|
Progress = _initWebFileSystemOp.Progress;
|
||||||
if (_initWebServerFileSystemOp.IsDone == false)
|
if (_initWebFileSystemOp.IsDone == false)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_initWebServerFileSystemOp.Status == EOperationStatus.Succeed)
|
if (_initWebFileSystemOp.Status == EOperationStatus.Succeed)
|
||||||
{
|
|
||||||
_steps = ESteps.CreateWebRemoteFileSystem;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _initWebServerFileSystemOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.CreateWebRemoteFileSystem)
|
|
||||||
{
|
|
||||||
if (_parameters.WebRemoteFileSystemParameters == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.CheckResult;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_impl.WebRemoteFileSystem = PlayModeHelper.CreateFileSystem(_impl.PackageName, _parameters.WebRemoteFileSystemParameters);
|
|
||||||
if (_impl.WebRemoteFileSystem == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = "Failed to create web remote file system";
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_steps = ESteps.InitWebRemoteFileSystem;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.InitWebRemoteFileSystem)
|
|
||||||
{
|
|
||||||
if (_initWebRemoteFileSystemOp == null)
|
|
||||||
_initWebRemoteFileSystemOp = _impl.WebServerFileSystem.InitializeFileSystemAsync();
|
|
||||||
|
|
||||||
Progress = _initWebRemoteFileSystemOp.Progress;
|
|
||||||
if (_initWebRemoteFileSystemOp.IsDone == false)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (_initWebRemoteFileSystemOp.Status == EOperationStatus.Succeed)
|
|
||||||
{
|
|
||||||
_steps = ESteps.CheckResult;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = _initWebRemoteFileSystemOp.Error;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_steps == ESteps.CheckResult)
|
|
||||||
{
|
|
||||||
if (_impl.WebServerFileSystem == null && _impl.WebRemoteFileSystem == null)
|
|
||||||
{
|
|
||||||
_steps = ESteps.Done;
|
|
||||||
Status = EOperationStatus.Failed;
|
|
||||||
Error = "Not found any file system !";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
_steps = ESteps.Done;
|
_steps = ESteps.Done;
|
||||||
Status = EOperationStatus.Succeed;
|
Status = EOperationStatus.Succeed;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_steps = ESteps.Done;
|
||||||
|
Status = EOperationStatus.Failed;
|
||||||
|
Error = _initWebFileSystemOp.Error;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -83,7 +83,6 @@ namespace YooAsset
|
||||||
Manifest.BuildPipeline = _buffer.ReadUTF8();
|
Manifest.BuildPipeline = _buffer.ReadUTF8();
|
||||||
Manifest.PackageName = _buffer.ReadUTF8();
|
Manifest.PackageName = _buffer.ReadUTF8();
|
||||||
Manifest.PackageVersion = _buffer.ReadUTF8();
|
Manifest.PackageVersion = _buffer.ReadUTF8();
|
||||||
Manifest.PackageNote = _buffer.ReadUTF8();
|
|
||||||
|
|
||||||
// 检测配置
|
// 检测配置
|
||||||
if (Manifest.EnableAddressable && Manifest.LocationToLower)
|
if (Manifest.EnableAddressable && Manifest.LocationToLower)
|
||||||
|
|
|
@ -225,7 +225,7 @@ namespace YooAsset
|
||||||
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(_manifest, _impl.BuildinFileSystem, _impl.CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(_manifest, _impl.BuildinFileSystem, _impl.DeliveryFileSystem, _impl.CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -237,7 +237,7 @@ namespace YooAsset
|
||||||
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(_manifest, new string[] { tag }, _impl.BuildinFileSystem, _impl.CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(_manifest, new string[] { tag }, _impl.BuildinFileSystem, _impl.DeliveryFileSystem, _impl.CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -249,7 +249,7 @@ namespace YooAsset
|
||||||
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
return ResourceDownloaderOperation.CreateEmptyDownloader(_impl.PackageName, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(_manifest, tags, _impl.BuildinFileSystem, _impl.CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(_manifest, tags, _impl.BuildinFileSystem, _impl.DeliveryFileSystem, _impl.CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -265,7 +265,7 @@ namespace YooAsset
|
||||||
var assetInfo = _manifest.ConvertLocationToAssetInfo(location, null);
|
var assetInfo = _manifest.ConvertLocationToAssetInfo(location, null);
|
||||||
assetInfos.Add(assetInfo);
|
assetInfos.Add(assetInfo);
|
||||||
|
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(_manifest, assetInfos.ToArray(), _impl.BuildinFileSystem, _impl.CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(_manifest, assetInfos.ToArray(), _impl.BuildinFileSystem, _impl.DeliveryFileSystem, _impl.CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -284,7 +284,7 @@ namespace YooAsset
|
||||||
assetInfos.Add(assetInfo);
|
assetInfos.Add(assetInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(_manifest, assetInfos.ToArray(), _impl.BuildinFileSystem, _impl.CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(_manifest, assetInfos.ToArray(), _impl.BuildinFileSystem, _impl.DeliveryFileSystem, _impl.CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(_impl.PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,11 +52,6 @@ namespace YooAsset
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string PackageVersion;
|
public string PackageVersion;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 资源包裹的备注信息
|
|
||||||
/// </summary>
|
|
||||||
public string PackageNote;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 资源列表(主动收集的资源列表)
|
/// 资源列表(主动收集的资源列表)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -8,6 +8,7 @@ namespace YooAsset
|
||||||
{
|
{
|
||||||
public readonly string PackageName;
|
public readonly string PackageName;
|
||||||
public IFileSystem BuildinFileSystem { set; get; } //可以为空!
|
public IFileSystem BuildinFileSystem { set; get; } //可以为空!
|
||||||
|
public IFileSystem DeliveryFileSystem { set; get; } //可以为空!
|
||||||
public IFileSystem CacheFileSystem { set; get; }
|
public IFileSystem CacheFileSystem { set; get; }
|
||||||
|
|
||||||
|
|
||||||
|
@ -34,6 +35,9 @@ namespace YooAsset
|
||||||
if (BuildinFileSystem != null)
|
if (BuildinFileSystem != null)
|
||||||
BuildinFileSystem.OnUpdate();
|
BuildinFileSystem.OnUpdate();
|
||||||
|
|
||||||
|
if (DeliveryFileSystem != null)
|
||||||
|
DeliveryFileSystem.OnUpdate();
|
||||||
|
|
||||||
if (CacheFileSystem != null)
|
if (CacheFileSystem != null)
|
||||||
CacheFileSystem.OnUpdate();
|
CacheFileSystem.OnUpdate();
|
||||||
}
|
}
|
||||||
|
@ -59,50 +63,50 @@ namespace YooAsset
|
||||||
|
|
||||||
ClearAllBundleFilesOperation IPlayMode.ClearAllBundleFilesAsync()
|
ClearAllBundleFilesOperation IPlayMode.ClearAllBundleFilesAsync()
|
||||||
{
|
{
|
||||||
var operation = new ClearAllBundleFilesImplOperation(this, BuildinFileSystem, CacheFileSystem, null);
|
var operation = new ClearAllBundleFilesImplOperation(this, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ClearUnusedBundleFilesOperation IPlayMode.ClearUnusedBundleFilesAsync()
|
ClearUnusedBundleFilesOperation IPlayMode.ClearUnusedBundleFilesAsync()
|
||||||
{
|
{
|
||||||
var operation = new ClearUnusedBundleFilesImplOperation(this, BuildinFileSystem, CacheFileSystem, null);
|
var operation = new ClearUnusedBundleFilesImplOperation(this, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(ActiveManifest, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(ActiveManifest, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(ActiveManifest, tags, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(ActiveManifest, tags, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(ActiveManifest, assetInfos, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(ActiveManifest, assetInfos, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByAll(ActiveManifest, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByAll(ActiveManifest, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByTags(ActiveManifest, tags, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByTags(ActiveManifest, tags, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceImporterOperation IPlayMode.CreateResourceImporterByFilePaths(string[] filePaths, int importerMaxNumber, int failedTryAgain, int timeout)
|
ResourceImporterOperation IPlayMode.CreateResourceImporterByFilePaths(string[] filePaths, int importerMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> importerList = PlayModeHelper.GetImporterListByFilePaths(ActiveManifest, filePaths, BuildinFileSystem, CacheFileSystem);
|
List<BundleInfo> importerList = PlayModeHelper.GetImporterListByFilePaths(ActiveManifest, filePaths, BuildinFileSystem, DeliveryFileSystem, CacheFileSystem);
|
||||||
var operation = new ResourceImporterOperation(PackageName, importerList, importerMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceImporterOperation(PackageName, importerList, importerMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -119,6 +123,11 @@ namespace YooAsset
|
||||||
BundleInfo bundleInfo = new BundleInfo(BuildinFileSystem, packageBundle);
|
BundleInfo bundleInfo = new BundleInfo(BuildinFileSystem, packageBundle);
|
||||||
return bundleInfo;
|
return bundleInfo;
|
||||||
}
|
}
|
||||||
|
if (DeliveryFileSystem != null && DeliveryFileSystem.Belong(packageBundle))
|
||||||
|
{
|
||||||
|
BundleInfo bundleInfo = new BundleInfo(DeliveryFileSystem, packageBundle);
|
||||||
|
return bundleInfo;
|
||||||
|
}
|
||||||
if (CacheFileSystem.Belong(packageBundle))
|
if (CacheFileSystem.Belong(packageBundle))
|
||||||
{
|
{
|
||||||
BundleInfo bundleInfo = new BundleInfo(CacheFileSystem, packageBundle);
|
BundleInfo bundleInfo = new BundleInfo(CacheFileSystem, packageBundle);
|
||||||
|
|
|
@ -7,8 +7,7 @@ namespace YooAsset
|
||||||
internal class WebPlayModeImpl : IPlayMode, IBundleQuery
|
internal class WebPlayModeImpl : IPlayMode, IBundleQuery
|
||||||
{
|
{
|
||||||
public readonly string PackageName;
|
public readonly string PackageName;
|
||||||
public IFileSystem WebServerFileSystem { set; get; } //可以为空!
|
public IFileSystem WebFileSystem { set; get; }
|
||||||
public IFileSystem WebRemoteFileSystem { set; get; } //可以为空!
|
|
||||||
|
|
||||||
|
|
||||||
public WebPlayModeImpl(string packageName)
|
public WebPlayModeImpl(string packageName)
|
||||||
|
@ -31,42 +30,21 @@ namespace YooAsset
|
||||||
|
|
||||||
void IPlayMode.UpdatePlayMode()
|
void IPlayMode.UpdatePlayMode()
|
||||||
{
|
{
|
||||||
if (WebServerFileSystem != null)
|
if (WebFileSystem != null)
|
||||||
WebServerFileSystem.OnUpdate();
|
WebFileSystem.OnUpdate();
|
||||||
|
|
||||||
if (WebRemoteFileSystem != null)
|
|
||||||
WebRemoteFileSystem.OnUpdate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout)
|
RequestPackageVersionOperation IPlayMode.RequestPackageVersionAsync(bool appendTimeTicks, int timeout)
|
||||||
{
|
{
|
||||||
if (WebRemoteFileSystem != null)
|
var operation = new RequestPackageVersionImplOperation(WebFileSystem, appendTimeTicks, timeout);
|
||||||
{
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
var operation = new RequestPackageVersionImplOperation(WebRemoteFileSystem, appendTimeTicks, timeout);
|
return operation;
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var operation = new RequestPackageVersionImplOperation(WebServerFileSystem, appendTimeTicks, timeout);
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
UpdatePackageManifestOperation IPlayMode.UpdatePackageManifestAsync(string packageVersion, int timeout)
|
UpdatePackageManifestOperation IPlayMode.UpdatePackageManifestAsync(string packageVersion, int timeout)
|
||||||
{
|
{
|
||||||
if (WebRemoteFileSystem != null)
|
var operation = new UpdatePackageManifestImplOperation(this, WebFileSystem, packageVersion, timeout);;
|
||||||
{
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
var operation = new UpdatePackageManifestImplOperation(this, WebRemoteFileSystem, packageVersion, timeout); ;
|
return operation;
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var operation = new UpdatePackageManifestImplOperation(this, WebServerFileSystem, packageVersion, timeout); ;
|
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
|
||||||
return operation;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
PreDownloadContentOperation IPlayMode.PreDownloadContentAsync(string packageVersion, int timeout)
|
PreDownloadContentOperation IPlayMode.PreDownloadContentAsync(string packageVersion, int timeout)
|
||||||
{
|
{
|
||||||
|
@ -77,50 +55,50 @@ namespace YooAsset
|
||||||
|
|
||||||
ClearAllBundleFilesOperation IPlayMode.ClearAllBundleFilesAsync()
|
ClearAllBundleFilesOperation IPlayMode.ClearAllBundleFilesAsync()
|
||||||
{
|
{
|
||||||
var operation = new ClearAllBundleFilesImplOperation(this, WebServerFileSystem, WebRemoteFileSystem, null);
|
var operation = new ClearAllBundleFilesImplOperation(this, WebFileSystem, null, null);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ClearUnusedBundleFilesOperation IPlayMode.ClearUnusedBundleFilesAsync()
|
ClearUnusedBundleFilesOperation IPlayMode.ClearUnusedBundleFilesAsync()
|
||||||
{
|
{
|
||||||
var operation = new ClearUnusedBundleFilesImplOperation(this, WebServerFileSystem, WebRemoteFileSystem, null);
|
var operation = new ClearUnusedBundleFilesImplOperation(this, WebFileSystem, null, null);
|
||||||
OperationSystem.StartOperation(PackageName, operation);
|
OperationSystem.StartOperation(PackageName, operation);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByAll(int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(ActiveManifest, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByAll(ActiveManifest, WebFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByTags(string[] tags, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(ActiveManifest, tags, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByTags(ActiveManifest, tags, WebFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
ResourceDownloaderOperation IPlayMode.CreateResourceDownloaderByPaths(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(ActiveManifest, assetInfos, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> downloadList = PlayModeHelper.GetDownloadListByPaths(ActiveManifest, assetInfos, WebFileSystem);
|
||||||
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceDownloaderOperation(PackageName, downloadList, downloadingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByAll(int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByAll(ActiveManifest, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByAll(ActiveManifest, WebFileSystem);
|
||||||
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
ResourceUnpackerOperation IPlayMode.CreateResourceUnpackerByTags(string[] tags, int upackingMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByTags(ActiveManifest, tags, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> unpcakList = PlayModeHelper.GetUnpackListByTags(ActiveManifest, tags, WebFileSystem);
|
||||||
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceUnpackerOperation(PackageName, unpcakList, upackingMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
ResourceImporterOperation IPlayMode.CreateResourceImporterByFilePaths(string[] filePaths, int importerMaxNumber, int failedTryAgain, int timeout)
|
ResourceImporterOperation IPlayMode.CreateResourceImporterByFilePaths(string[] filePaths, int importerMaxNumber, int failedTryAgain, int timeout)
|
||||||
{
|
{
|
||||||
List<BundleInfo> importerList = PlayModeHelper.GetImporterListByFilePaths(ActiveManifest, filePaths, WebServerFileSystem, WebRemoteFileSystem);
|
List<BundleInfo> importerList = PlayModeHelper.GetImporterListByFilePaths(ActiveManifest, filePaths, WebFileSystem);
|
||||||
var operation = new ResourceImporterOperation(PackageName, importerList, importerMaxNumber, failedTryAgain, timeout);
|
var operation = new ResourceImporterOperation(PackageName, importerList, importerMaxNumber, failedTryAgain, timeout);
|
||||||
return operation;
|
return operation;
|
||||||
}
|
}
|
||||||
|
@ -132,15 +110,9 @@ namespace YooAsset
|
||||||
if (packageBundle == null)
|
if (packageBundle == null)
|
||||||
throw new Exception("Should never get here !");
|
throw new Exception("Should never get here !");
|
||||||
|
|
||||||
if (WebServerFileSystem != null && WebServerFileSystem.Belong(packageBundle))
|
if (WebFileSystem.Belong(packageBundle))
|
||||||
{
|
{
|
||||||
BundleInfo bundleInfo = new BundleInfo(WebServerFileSystem, packageBundle);
|
BundleInfo bundleInfo = new BundleInfo(WebFileSystem, packageBundle);
|
||||||
return bundleInfo;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (WebRemoteFileSystem != null && WebRemoteFileSystem.Belong(packageBundle))
|
|
||||||
{
|
|
||||||
BundleInfo bundleInfo = new BundleInfo(WebRemoteFileSystem, packageBundle);
|
|
||||||
return bundleInfo;
|
return bundleInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -176,26 +176,6 @@ namespace YooAsset
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// 检测文件系统参数
|
|
||||||
if (_playMode == EPlayMode.WebPlayMode)
|
|
||||||
{
|
|
||||||
var webPlayModeParams = parameters as WebPlayModeParameters;
|
|
||||||
if (webPlayModeParams.WebServerFileSystemParameters != null)
|
|
||||||
{
|
|
||||||
var fileSystemClassName = webPlayModeParams.WebServerFileSystemParameters.FileSystemClass;
|
|
||||||
if (fileSystemClassName == typeof(DefaultCacheFileSystem).FullName
|
|
||||||
|| fileSystemClassName == typeof(DefaultBuildinFileSystem).FullName)
|
|
||||||
throw new Exception($"{fileSystemClassName} not support {nameof(EPlayMode.WebPlayMode)}");
|
|
||||||
}
|
|
||||||
if (webPlayModeParams.WebRemoteFileSystemParameters != null)
|
|
||||||
{
|
|
||||||
var fileSystemClassName = webPlayModeParams.WebRemoteFileSystemParameters.FileSystemClass;
|
|
||||||
if (fileSystemClassName == typeof(DefaultCacheFileSystem).FullName
|
|
||||||
|| fileSystemClassName == typeof(DefaultBuildinFileSystem).FullName)
|
|
||||||
throw new Exception($"{fileSystemClassName} not support {nameof(EPlayMode.WebPlayMode)}");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
private void InitializeOperation_Completed(AsyncOperationBase op)
|
private void InitializeOperation_Completed(AsyncOperationBase op)
|
||||||
{
|
{
|
||||||
|
@ -282,15 +262,6 @@ namespace YooAsset
|
||||||
return _playModeImpl.ActiveManifest.PackageVersion;
|
return _playModeImpl.ActiveManifest.PackageVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 获取本地包裹的备注信息
|
|
||||||
/// </summary>
|
|
||||||
public string GetPackageNote()
|
|
||||||
{
|
|
||||||
DebugCheckInitialize();
|
|
||||||
return _playModeImpl.ActiveManifest.PackageNote;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region 资源回收
|
#region 资源回收
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 强制回收所有资源
|
/// 强制回收所有资源
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace YooAsset
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 清单文件格式版本
|
/// 清单文件格式版本
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const string ManifestFileVersion = "2.2.5";
|
public const string ManifestFileVersion = "2.0.0";
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -92,7 +92,7 @@ internal class FsmInitializePackage : IStateNode
|
||||||
IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
|
IRemoteServices remoteServices = new RemoteServices(defaultHostServer, fallbackHostServer);
|
||||||
createParameters.WebFileSystemParameters = WechatFileSystemCreater.CreateWechatFileSystemParameters(remoteServices);
|
createParameters.WebFileSystemParameters = WechatFileSystemCreater.CreateWechatFileSystemParameters(remoteServices);
|
||||||
#else
|
#else
|
||||||
createParameters.WebServerFileSystemParameters = FileSystemParameters.CreateDefaultWebServerFileSystemParameters();
|
createParameters.WebFileSystemParameters = FileSystemParameters.CreateDefaultWebFileSystemParameters();
|
||||||
#endif
|
#endif
|
||||||
initializationOperation = package.InitializeAsync(createParameters);
|
initializationOperation = package.InitializeAsync(createParameters);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue