Compare commits

...

8 Commits

Author SHA1 Message Date
Codeoverflow
8329045a68 Merge 96b33f5816 into f3ebda0c04 2025-09-30 15:51:13 +08:00
何冠峰
f3ebda0c04 refactor : 重构资源清单反序列化逻辑 2025-09-30 15:35:32 +08:00
CodeMasterYi
96b33f5816 fix folder name typo: DefaultBuildinFileSystem=>DefaultBuiltinFileSystem 2025-09-30 13:16:02 +08:00
CodeMasterYi
9ad572c7a4 fix typos: buildin=>builtin 2025-09-30 13:05:57 +08:00
何冠峰
5602addaca fix #645
修复极端情况下Shader变种收集不完整的问题
2025-09-24 16:37:46 +08:00
何冠峰
c4ae67aa8e perf: 资源扫描不再主动生成报告文件 2025-09-23 11:08:55 +08:00
何冠峰
bbcc3bf971 style : 修改代码注释说明 2025-09-19 10:05:45 +08:00
何冠峰
8b0e75b9b3 feat : 扩展Taptap小游戏文件类 2025-09-19 10:05:16 +08:00
79 changed files with 560 additions and 595 deletions

View File

@@ -32,17 +32,10 @@ namespace YooAsset.Editor
// 开始扫描工作 // 开始扫描工作
ScanReport report = scanner.RunScanner(); ScanReport report = scanner.RunScanner();
// 检测报告合法性
report.CheckError(); report.CheckError();
// 保存扫描结果 // 返回扫描结果
string saveDirectory = scanner.SaveDirectory; return new ScannerResult(report);
if (string.IsNullOrEmpty(saveDirectory))
saveDirectory = "Assets/";
string filePath = $"{saveDirectory}/{scanner.ScannerName}_{scanner.ScannerDesc}.json";
ScanReportConfig.ExportJsonConfig(filePath, report);
return new ScannerResult(filePath, report);
} }
catch (Exception e) catch (Exception e)
{ {

View File

@@ -3,11 +3,6 @@ namespace YooAsset.Editor
{ {
public class ScannerResult public class ScannerResult
{ {
/// <summary>
/// 生成的报告文件路径
/// </summary>
public string ReprotFilePath { private set; get; }
/// <summary> /// <summary>
/// 报告对象 /// 报告对象
/// </summary> /// </summary>
@@ -43,11 +38,9 @@ namespace YooAsset.Editor
ErrorInfo = error; ErrorInfo = error;
ErrorStack = stack; ErrorStack = stack;
} }
public ScannerResult(string filePath, ScanReport report) public ScannerResult(ScanReport report)
{ {
ReprotFilePath = filePath;
Report = report; Report = report;
ErrorInfo = string.Empty;
} }
/// <summary> /// <summary>
@@ -61,5 +54,19 @@ namespace YooAsset.Editor
reproterWindow.ImportSingleReprotFile(Report); reproterWindow.ImportSingleReprotFile(Report);
} }
} }
/// <summary>
/// 保存报告文件
/// </summary>
public void SaveReportFile(string saveDirectory)
{
if (Report == null)
throw new System.Exception("Scan report is invalid !");
if (string.IsNullOrEmpty(saveDirectory))
saveDirectory = "Assets/";
string filePath = $"{saveDirectory}/{Report.ReportName}_{Report.ReportDesc}.json";
ScanReportConfig.ExportJsonConfig(filePath, Report);
}
} }
} }

View File

@@ -22,7 +22,7 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
public static string GetStreamingAssetsRoot() public static string GetStreamingAssetsRoot()
{ {
return YooAssetSettingsData.GetYooDefaultBuildinRoot(); return YooAssetSettingsData.GetYooDefaultBuiltinRoot();
} }
} }
} }

View File

@@ -43,28 +43,28 @@ namespace YooAsset.Editor
EditorPrefs.SetInt(key, (int)fileNameStyle); EditorPrefs.SetInt(key, (int)fileNameStyle);
} }
// EBuildinFileCopyOption // EBuiltinFileCopyOption
public static EBuildinFileCopyOption GetPackageBuildinFileCopyOption(string packageName, string buildPipeline) public static EBuiltinFileCopyOption GetPackageBuiltinFileCopyOption(string packageName, string buildPipeline)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuiltinFileCopyOption)}";
return (EBuildinFileCopyOption)EditorPrefs.GetInt(key, (int)EBuildinFileCopyOption.None); return (EBuiltinFileCopyOption)EditorPrefs.GetInt(key, (int)EBuiltinFileCopyOption.None);
} }
public static void SetPackageBuildinFileCopyOption(string packageName, string buildPipeline, EBuildinFileCopyOption buildinFileCopyOption) public static void SetPackageBuiltinFileCopyOption(string packageName, string buildPipeline, EBuiltinFileCopyOption builtinFileCopyOption)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuiltinFileCopyOption)}";
EditorPrefs.SetInt(key, (int)buildinFileCopyOption); EditorPrefs.SetInt(key, (int)builtinFileCopyOption);
} }
// BuildFileCopyParams // BuildFileCopyParams
public static string GetPackageBuildinFileCopyParams(string packageName, string buildPipeline) public static string GetPackageBuiltinFileCopyParams(string packageName, string buildPipeline)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams";
return EditorPrefs.GetString(key, string.Empty); return EditorPrefs.GetString(key, string.Empty);
} }
public static void SetPackageBuildinFileCopyParams(string packageName, string buildPipeline, string buildinFileCopyParams) public static void SetPackageBuiltinFileCopyParams(string packageName, string buildPipeline, string builtinFileCopyParams)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams";
EditorPrefs.SetString(key, buildinFileCopyParams); EditorPrefs.SetString(key, builtinFileCopyParams);
} }
// EncyptionServicesClassName // EncyptionServicesClassName

View File

@@ -17,15 +17,15 @@ namespace YooAsset.Editor
{ {
var buildParameters = new EditorSimulateBuildParameters(); var buildParameters = new EditorSimulateBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString(); buildParameters.BuildPipeline = EBuildPipeline.EditorSimulateBuildPipeline.ToString();
buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle; buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle;
buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget; buildParameters.BuildTarget = EditorUserBuildSettings.activeBuildTarget;
buildParameters.PackageName = packageName; buildParameters.PackageName = packageName;
buildParameters.PackageVersion = "Simulate"; buildParameters.PackageVersion = "Simulate";
buildParameters.FileNameStyle = EFileNameStyle.HashName; buildParameters.FileNameStyle = EFileNameStyle.HashName;
buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None; buildParameters.BuiltinFileCopyOption = EBuiltinFileCopyOption.None;
buildParameters.BuildinFileCopyParams = string.Empty; buildParameters.BuiltinFileCopyParams = string.Empty;
buildParameters.UseAssetDependencyDB = true; buildParameters.UseAssetDependencyDB = true;
var pipeline = new EditorSimulateBuildPipeline(); var pipeline = new EditorSimulateBuildPipeline();

View File

@@ -19,7 +19,7 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 内置文件的根目录 /// 内置文件的根目录
/// </summary> /// </summary>
public string BuildinFileRoot; public string BuiltinFileRoot;
/// <summary> /// <summary>
/// 构建管线名称 /// 构建管线名称
@@ -86,12 +86,12 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 内置文件的拷贝选项 /// 内置文件的拷贝选项
/// </summary> /// </summary>
public EBuildinFileCopyOption BuildinFileCopyOption = EBuildinFileCopyOption.None; public EBuiltinFileCopyOption BuiltinFileCopyOption = EBuiltinFileCopyOption.None;
/// <summary> /// <summary>
/// 内置文件的拷贝参数 /// 内置文件的拷贝参数
/// </summary> /// </summary>
public string BuildinFileCopyParams; public string BuiltinFileCopyParams;
/// <summary> /// <summary>
/// 资源包加密服务类 /// 资源包加密服务类
@@ -111,7 +111,7 @@ namespace YooAsset.Editor
private string _pipelineOutputDirectory = string.Empty; private string _pipelineOutputDirectory = string.Empty;
private string _packageOutputDirectory = string.Empty; private string _packageOutputDirectory = string.Empty;
private string _packageRootDirectory = string.Empty; private string _packageRootDirectory = string.Empty;
private string _buildinRootDirectory = string.Empty; private string _builtinRootDirectory = string.Empty;
/// <summary> /// <summary>
/// 检测构建参数是否合法 /// 检测构建参数是否合法
@@ -136,9 +136,9 @@ namespace YooAsset.Editor
string message = BuildLogger.GetErrorMessage(ErrorCode.BuildOutputRootIsNullOrEmpty, "Build output root is null or empty !"); string message = BuildLogger.GetErrorMessage(ErrorCode.BuildOutputRootIsNullOrEmpty, "Build output root is null or empty !");
throw new Exception(message); throw new Exception(message);
} }
if (string.IsNullOrEmpty(BuildinFileRoot)) if (string.IsNullOrEmpty(BuiltinFileRoot))
{ {
string message = BuildLogger.GetErrorMessage(ErrorCode.BuildinFileRootIsNullOrEmpty, "Buildin file root is null or empty !"); string message = BuildLogger.GetErrorMessage(ErrorCode.BuiltinFileRootIsNullOrEmpty, "Builtin file root is null or empty !");
throw new Exception(message); throw new Exception(message);
} }
if (string.IsNullOrEmpty(BuildPipeline)) if (string.IsNullOrEmpty(BuildPipeline))
@@ -210,13 +210,13 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 获取内置资源的根目录 /// 获取内置资源的根目录
/// </summary> /// </summary>
public virtual string GetBuildinRootDirectory() public virtual string GetBuiltinRootDirectory()
{ {
if (string.IsNullOrEmpty(_buildinRootDirectory)) if (string.IsNullOrEmpty(_builtinRootDirectory))
{ {
_buildinRootDirectory = $"{BuildinFileRoot}/{PackageName}"; _builtinRootDirectory = $"{BuiltinFileRoot}/{PackageName}";
} }
return _buildinRootDirectory; return _builtinRootDirectory;
} }
} }
} }

View File

@@ -55,9 +55,9 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 获取内置资源的根目录 /// 获取内置资源的根目录
/// </summary> /// </summary>
public string GetBuildinRootDirectory() public string GetBuiltinRootDirectory()
{ {
return Parameters.GetBuildinRootDirectory(); return Parameters.GetBuiltinRootDirectory();
} }
} }
} }

View File

@@ -6,30 +6,30 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuildinFiles public class TaskCopyBuiltinFiles
{ {
/// <summary> /// <summary>
/// 拷贝首包资源文件 /// 拷贝首包资源文件
/// </summary> /// </summary>
internal void CopyBuildinFilesToStreaming(BuildParametersContext buildParametersContext, PackageManifest manifest) internal void CopyBuiltinFilesToStreaming(BuildParametersContext buildParametersContext, PackageManifest manifest)
{ {
EBuildinFileCopyOption copyOption = buildParametersContext.Parameters.BuildinFileCopyOption; EBuiltinFileCopyOption copyOption = buildParametersContext.Parameters.BuiltinFileCopyOption;
string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory(); string packageOutputDirectory = buildParametersContext.GetPackageOutputDirectory();
string buildinRootDirectory = buildParametersContext.GetBuildinRootDirectory(); string builtinRootDirectory = buildParametersContext.GetBuiltinRootDirectory();
string buildPackageName = buildParametersContext.Parameters.PackageName; string buildPackageName = buildParametersContext.Parameters.PackageName;
string buildPackageVersion = buildParametersContext.Parameters.PackageVersion; string buildPackageVersion = buildParametersContext.Parameters.PackageVersion;
// 清空内置文件的目录 // 清空内置文件的目录
if (copyOption == EBuildinFileCopyOption.ClearAndCopyAll || copyOption == EBuildinFileCopyOption.ClearAndCopyByTags) if (copyOption == EBuiltinFileCopyOption.ClearAndCopyAll || copyOption == EBuiltinFileCopyOption.ClearAndCopyByTags)
{ {
EditorTools.ClearFolder(buildinRootDirectory); EditorTools.ClearFolder(builtinRootDirectory);
} }
// 拷贝补丁清单文件 // 拷贝补丁清单文件
{ {
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildPackageName, buildPackageVersion); string fileName = YooAssetSettingsData.GetManifestBinaryFileName(buildPackageName, buildPackageVersion);
string sourcePath = $"{packageOutputDirectory}/{fileName}"; string sourcePath = $"{packageOutputDirectory}/{fileName}";
string destPath = $"{buildinRootDirectory}/{fileName}"; string destPath = $"{builtinRootDirectory}/{fileName}";
EditorTools.CopyFile(sourcePath, destPath, true); EditorTools.CopyFile(sourcePath, destPath, true);
} }
@@ -37,7 +37,7 @@ namespace YooAsset.Editor
{ {
string fileName = YooAssetSettingsData.GetPackageHashFileName(buildPackageName, buildPackageVersion); string fileName = YooAssetSettingsData.GetPackageHashFileName(buildPackageName, buildPackageVersion);
string sourcePath = $"{packageOutputDirectory}/{fileName}"; string sourcePath = $"{packageOutputDirectory}/{fileName}";
string destPath = $"{buildinRootDirectory}/{fileName}"; string destPath = $"{builtinRootDirectory}/{fileName}";
EditorTools.CopyFile(sourcePath, destPath, true); EditorTools.CopyFile(sourcePath, destPath, true);
} }
@@ -45,38 +45,38 @@ namespace YooAsset.Editor
{ {
string fileName = YooAssetSettingsData.GetPackageVersionFileName(buildPackageName); string fileName = YooAssetSettingsData.GetPackageVersionFileName(buildPackageName);
string sourcePath = $"{packageOutputDirectory}/{fileName}"; string sourcePath = $"{packageOutputDirectory}/{fileName}";
string destPath = $"{buildinRootDirectory}/{fileName}"; string destPath = $"{builtinRootDirectory}/{fileName}";
EditorTools.CopyFile(sourcePath, destPath, true); EditorTools.CopyFile(sourcePath, destPath, true);
} }
// 拷贝文件列表(所有文件) // 拷贝文件列表(所有文件)
if (copyOption == EBuildinFileCopyOption.ClearAndCopyAll || copyOption == EBuildinFileCopyOption.OnlyCopyAll) if (copyOption == EBuiltinFileCopyOption.ClearAndCopyAll || copyOption == EBuiltinFileCopyOption.OnlyCopyAll)
{ {
foreach (var packageBundle in manifest.BundleList) foreach (var packageBundle in manifest.BundleList)
{ {
string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}"; string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}";
string destPath = $"{buildinRootDirectory}/{packageBundle.FileName}"; string destPath = $"{builtinRootDirectory}/{packageBundle.FileName}";
EditorTools.CopyFile(sourcePath, destPath, true); EditorTools.CopyFile(sourcePath, destPath, true);
} }
} }
// 拷贝文件列表(带标签的文件) // 拷贝文件列表(带标签的文件)
if (copyOption == EBuildinFileCopyOption.ClearAndCopyByTags || copyOption == EBuildinFileCopyOption.OnlyCopyByTags) if (copyOption == EBuiltinFileCopyOption.ClearAndCopyByTags || copyOption == EBuiltinFileCopyOption.OnlyCopyByTags)
{ {
string[] tags = buildParametersContext.Parameters.BuildinFileCopyParams.Split(';'); string[] tags = buildParametersContext.Parameters.BuiltinFileCopyParams.Split(';');
foreach (var packageBundle in manifest.BundleList) foreach (var packageBundle in manifest.BundleList)
{ {
if (packageBundle.HasTag(tags) == false) if (packageBundle.HasTag(tags) == false)
continue; continue;
string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}"; string sourcePath = $"{packageOutputDirectory}/{packageBundle.FileName}";
string destPath = $"{buildinRootDirectory}/{packageBundle.FileName}"; string destPath = $"{builtinRootDirectory}/{packageBundle.FileName}";
EditorTools.CopyFile(sourcePath, destPath, true); EditorTools.CopyFile(sourcePath, destPath, true);
} }
} }
// 刷新目录 // 刷新目录
AssetDatabase.Refresh(); AssetDatabase.Refresh();
BuildLogger.Log($"Buildin files copy complete: {buildinRootDirectory}"); BuildLogger.Log($"Builtin files copy complete: {builtinRootDirectory}");
} }
} }
} }

View File

@@ -12,10 +12,10 @@ namespace YooAsset.Editor
/// </summary> /// </summary>
internal void CreateCatalogFile(BuildParametersContext buildParametersContext) internal void CreateCatalogFile(BuildParametersContext buildParametersContext)
{ {
string buildinRootDirectory = buildParametersContext.GetBuildinRootDirectory(); string builtinRootDirectory = buildParametersContext.GetBuiltinRootDirectory();
string buildPackageName = buildParametersContext.Parameters.PackageName; string buildPackageName = buildParametersContext.Parameters.PackageName;
var manifestServices = buildParametersContext.Parameters.ManifestRestoreServices; var manifestServices = buildParametersContext.Parameters.ManifestRestoreServices;
CatalogTools.CreateCatalogFile(manifestServices, buildPackageName, buildinRootDirectory); CatalogTools.CreateCatalogFile(manifestServices, buildPackageName, builtinRootDirectory);
// 刷新目录 // 刷新目录
AssetDatabase.Refresh(); AssetDatabase.Refresh();

View File

@@ -6,15 +6,15 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuildinFiles_BBP : TaskCopyBuildinFiles, IBuildTask public class TaskCopyBuiltinFiles_BBP : TaskCopyBuiltinFiles, IBuildTask
{ {
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
var manifestContext = context.GetContextObject<ManifestContext>(); var manifestContext = context.GetContextObject<ManifestContext>();
if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParametersContext.Parameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest);
} }
} }
} }

View File

@@ -11,7 +11,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParametersContext.Parameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -35,7 +35,7 @@ namespace YooAsset.Editor
new TaskCreateManifest_BBP(), new TaskCreateManifest_BBP(),
new TaskCreateReport_BBP(), new TaskCreateReport_BBP(),
new TaskCreatePackage_BBP(), new TaskCreatePackage_BBP(),
new TaskCopyBuildinFiles_BBP(), new TaskCopyBuiltinFiles_BBP(),
new TaskCreateCatalog_BBP() new TaskCreateCatalog_BBP()
}; };
return pipeline; return pipeline;

View File

@@ -6,16 +6,16 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuildinFiles_RFBP : TaskCopyBuildinFiles, IBuildTask public class TaskCopyBuiltinFiles_RFBP : TaskCopyBuiltinFiles, IBuildTask
{ {
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
var buildParameters = buildParametersContext.Parameters; var buildParameters = buildParametersContext.Parameters;
var manifestContext = context.GetContextObject<ManifestContext>(); var manifestContext = context.GetContextObject<ManifestContext>();
if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest);
} }
} }
} }

View File

@@ -11,7 +11,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParametersContext.Parameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -37,7 +37,7 @@ namespace YooAsset.Editor
new TaskCreateManifest_RFBP(), new TaskCreateManifest_RFBP(),
new TaskCreateReport_RFBP(), new TaskCreateReport_RFBP(),
new TaskCreatePackage_RFBP(), new TaskCreatePackage_RFBP(),
new TaskCopyBuildinFiles_RFBP(), new TaskCopyBuiltinFiles_RFBP(),
new TaskCreateCatalog_RFBP() new TaskCreateCatalog_RFBP()
}; };
return pipeline; return pipeline;

View File

@@ -6,15 +6,15 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuildinFiles_SBP : TaskCopyBuildinFiles, IBuildTask public class TaskCopyBuiltinFiles_SBP : TaskCopyBuiltinFiles, IBuildTask
{ {
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
var manifestContext = context.GetContextObject<ManifestContext>(); var manifestContext = context.GetContextObject<ManifestContext>();
if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParametersContext.Parameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CopyBuildinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest);
} }
} }
} }

View File

@@ -11,7 +11,7 @@ namespace YooAsset.Editor
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
var buildParametersContext = context.GetContextObject<BuildParametersContext>(); var buildParametersContext = context.GetContextObject<BuildParametersContext>();
if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None) if (buildParametersContext.Parameters.BuiltinFileCopyOption != EBuiltinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -35,7 +35,7 @@ namespace YooAsset.Editor
new TaskCreateManifest_SBP(), new TaskCreateManifest_SBP(),
new TaskCreateReport_SBP(), new TaskCreateReport_SBP(),
new TaskCreatePackage_SBP(), new TaskCreatePackage_SBP(),
new TaskCopyBuildinFiles_SBP(), new TaskCopyBuiltinFiles_SBP(),
new TaskCreateCatalog_SBP() new TaskCreateCatalog_SBP()
}; };
return pipeline; return pipeline;

View File

@@ -10,7 +10,7 @@ namespace YooAsset.Editor
PackageNameIsNullOrEmpty = 111, PackageNameIsNullOrEmpty = 111,
PackageVersionIsNullOrEmpty = 112, PackageVersionIsNullOrEmpty = 112,
BuildOutputRootIsNullOrEmpty = 113, BuildOutputRootIsNullOrEmpty = 113,
BuildinFileRootIsNullOrEmpty = 114, BuiltinFileRootIsNullOrEmpty = 114,
PackageOutputDirectoryExists = 115, PackageOutputDirectoryExists = 115,
BuildPipelineIsNullOrEmpty = 116, BuildPipelineIsNullOrEmpty = 116,
BuildBundleTypeIsUnknown = 117, BuildBundleTypeIsUnknown = 117,

View File

@@ -4,7 +4,7 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 首包资源文件的拷贝方式 /// 首包资源文件的拷贝方式
/// </summary> /// </summary>
public enum EBuildinFileCopyOption public enum EBuiltinFileCopyOption
{ {
/// <summary> /// <summary>
/// 不拷贝任何文件 /// 不拷贝任何文件

View File

@@ -127,35 +127,35 @@ namespace YooAsset.Editor
}); });
UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth); UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth);
} }
protected void SetCopyBuildinFileOptionField(EnumField enumField, TextField tagField) protected void SetCopyBuiltinFileOptionField(EnumField enumField, TextField tagField)
{ {
// 首包文件拷贝选项 // 首包文件拷贝选项
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
enumField.Init(buildinFileCopyOption); enumField.Init(builtinFileCopyOption);
enumField.SetValueWithoutNotify(buildinFileCopyOption); enumField.SetValueWithoutNotify(builtinFileCopyOption);
enumField.style.width = StyleWidth; enumField.style.width = StyleWidth;
enumField.RegisterValueChangedCallback(evt => enumField.RegisterValueChangedCallback(evt =>
{ {
AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(PackageName, PipelineName, (EBuildinFileCopyOption)enumField.value); AssetBundleBuilderSetting.SetPackageBuiltinFileCopyOption(PackageName, PipelineName, (EBuiltinFileCopyOption)enumField.value);
// 设置内置资源标签显隐 // 设置内置资源标签显隐
SetCopyBuildinFileTagsVisible(tagField); SetCopyBuiltinFileTagsVisible(tagField);
}); });
UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth); UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth);
} }
protected void SetCopyBuildinFileTagsVisible(TextField tagField) protected void SetCopyBuiltinFileTagsVisible(TextField tagField)
{ {
var option = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var option = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
tagField.visible = option == EBuildinFileCopyOption.ClearAndCopyByTags || option == EBuildinFileCopyOption.OnlyCopyByTags; tagField.visible = option == EBuiltinFileCopyOption.ClearAndCopyByTags || option == EBuiltinFileCopyOption.OnlyCopyByTags;
} }
protected void SetCopyBuildinFileTagsField(TextField textField) protected void SetCopyBuiltinFileTagsField(TextField textField)
{ {
// 首包文件拷贝参数 // 首包文件拷贝参数
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName); var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName);
textField.SetValueWithoutNotify(buildinFileCopyParams); textField.SetValueWithoutNotify(builtinFileCopyParams);
textField.RegisterValueChangedCallback(evt => textField.RegisterValueChangedCallback(evt =>
{ {
AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(PackageName, PipelineName, textField.value); AssetBundleBuilderSetting.SetPackageBuiltinFileCopyParams(PackageName, PipelineName, textField.value);
}); });
UIElementsTools.SetElementLabelMinWidth(textField, LabelMinWidth); UIElementsTools.SetElementLabelMinWidth(textField, LabelMinWidth);
} }

View File

@@ -21,8 +21,8 @@ namespace YooAsset.Editor
protected PopupField<Type> _manifestRestoreServicesField; protected PopupField<Type> _manifestRestoreServicesField;
protected EnumField _compressionField; protected EnumField _compressionField;
protected EnumField _outputNameStyleField; protected EnumField _outputNameStyleField;
protected EnumField _copyBuildinFileOptionField; protected EnumField _copyBuiltinFileOptionField;
protected TextField _copyBuildinFileTagsField; protected TextField _copyBuiltinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -60,13 +60,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam"); _copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam");
SetCopyBuildinFileTagsField(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField);
SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption"); _copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption");
SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField); SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -99,15 +99,15 @@ namespace YooAsset.Editor
protected virtual void ExecuteBuild() protected virtual void ExecuteBuild()
{ {
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName);
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName); var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName);
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, PipelineName); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, PipelineName);
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName); var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName);
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName);
BuiltinBuildParameters buildParameters = new BuiltinBuildParameters(); BuiltinBuildParameters buildParameters = new BuiltinBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = PipelineName.ToString(); buildParameters.BuildPipeline = PipelineName.ToString();
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
@@ -116,8 +116,8 @@ namespace YooAsset.Editor
buildParameters.EnableSharePackRule = true; buildParameters.EnableSharePackRule = true;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;
buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuiltinFileCopyOption = builtinFileCopyOption;
buildParameters.BuildinFileCopyParams = buildinFileCopyParams; buildParameters.BuiltinFileCopyParams = builtinFileCopyParams;
buildParameters.CompressOption = compressOption; buildParameters.CompressOption = compressOption;
buildParameters.ClearBuildCacheFiles = clearBuildCache; buildParameters.ClearBuildCacheFiles = clearBuildCache;
buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.UseAssetDependencyDB = useAssetDependencyDB;

View File

@@ -7,8 +7,8 @@
<ui:VisualElement name="PopupContainer" style="flex-grow: 1;" /> <ui:VisualElement name="PopupContainer" style="flex-grow: 1;" />
<uie:EnumField label="Compression" value="Center" name="Compression" /> <uie:EnumField label="Compression" value="Center" name="Compression" />
<uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" /> <uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" />
<uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" /> <uie:EnumField label="Copy Builtin File Option" value="Center" name="CopyBuiltinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" />
<ui:VisualElement name="ExtensionContainer" /> <ui:VisualElement name="ExtensionContainer" />
<ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" /> <ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" />
</ui:VisualElement> </ui:VisualElement>

View File

@@ -59,12 +59,12 @@ namespace YooAsset.Editor
protected virtual void ExecuteBuild() protected virtual void ExecuteBuild()
{ {
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName);
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName); var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName);
EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters(); EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = PipelineName.ToString(); buildParameters.BuildPipeline = PipelineName.ToString();
buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle; buildParameters.BuildBundleType = (int)EBuildBundleType.VirtualBundle;
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
@@ -72,8 +72,8 @@ namespace YooAsset.Editor
buildParameters.PackageVersion = _buildVersionField.value; buildParameters.PackageVersion = _buildVersionField.value;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;
buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuiltinFileCopyOption = builtinFileCopyOption;
buildParameters.BuildinFileCopyParams = buildinFileCopyParams; buildParameters.BuiltinFileCopyParams = builtinFileCopyParams;
EditorSimulateBuildPipeline pipeline = new EditorSimulateBuildPipeline(); EditorSimulateBuildPipeline pipeline = new EditorSimulateBuildPipeline();
var buildResult = pipeline.Run(buildParameters, true); var buildResult = pipeline.Run(buildParameters, true);

View File

@@ -20,8 +20,8 @@ namespace YooAsset.Editor
protected PopupField<Type> _manifestProcessServicesField; protected PopupField<Type> _manifestProcessServicesField;
protected PopupField<Type> _manifestRestoreServicesField; protected PopupField<Type> _manifestRestoreServicesField;
protected EnumField _outputNameStyleField; protected EnumField _outputNameStyleField;
protected EnumField _copyBuildinFileOptionField; protected EnumField _copyBuiltinFileOptionField;
protected TextField _copyBuildinFileTagsField; protected TextField _copyBuiltinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -55,13 +55,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam"); _copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam");
SetCopyBuildinFileTagsField(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField);
SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption"); _copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption");
SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField); SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -94,14 +94,14 @@ namespace YooAsset.Editor
protected virtual void ExecuteBuild() protected virtual void ExecuteBuild()
{ {
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName);
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName); var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName);
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName); var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName);
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName);
RawFileBuildParameters buildParameters = new RawFileBuildParameters(); RawFileBuildParameters buildParameters = new RawFileBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = PipelineName.ToString(); buildParameters.BuildPipeline = PipelineName.ToString();
buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle; buildParameters.BuildBundleType = (int)EBuildBundleType.RawBundle;
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
@@ -109,8 +109,8 @@ namespace YooAsset.Editor
buildParameters.PackageVersion = _buildVersionField.value; buildParameters.PackageVersion = _buildVersionField.value;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;
buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuiltinFileCopyOption = builtinFileCopyOption;
buildParameters.BuildinFileCopyParams = buildinFileCopyParams; buildParameters.BuiltinFileCopyParams = builtinFileCopyParams;
buildParameters.ClearBuildCacheFiles = clearBuildCache; buildParameters.ClearBuildCacheFiles = clearBuildCache;
buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.UseAssetDependencyDB = useAssetDependencyDB;
buildParameters.EncryptionServices = CreateEncryptionServicesInstance(); buildParameters.EncryptionServices = CreateEncryptionServicesInstance();

View File

@@ -6,8 +6,8 @@
<ui:Toggle label="Use Asset Depend DB" name="UseAssetDependency" /> <ui:Toggle label="Use Asset Depend DB" name="UseAssetDependency" />
<ui:VisualElement name="PopupContainer" style="flex-grow: 1;" /> <ui:VisualElement name="PopupContainer" style="flex-grow: 1;" />
<uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" /> <uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" />
<uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" /> <uie:EnumField label="Copy Builtin File Option" value="Center" name="CopyBuiltinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" />
<ui:VisualElement name="ExtensionContainer" /> <ui:VisualElement name="ExtensionContainer" />
<ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" /> <ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" />
</ui:VisualElement> </ui:VisualElement>

View File

@@ -21,8 +21,8 @@ namespace YooAsset.Editor
protected PopupField<Type> _manifestRestoreServicesField; protected PopupField<Type> _manifestRestoreServicesField;
protected EnumField _compressionField; protected EnumField _compressionField;
protected EnumField _outputNameStyleField; protected EnumField _outputNameStyleField;
protected EnumField _copyBuildinFileOptionField; protected EnumField _copyBuiltinFileOptionField;
protected TextField _copyBuildinFileTagsField; protected TextField _copyBuiltinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -60,13 +60,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam"); _copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam");
SetCopyBuildinFileTagsField(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField);
SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField); SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption"); _copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption");
SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField); SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -99,15 +99,15 @@ namespace YooAsset.Editor
protected virtual void ExecuteBuild() protected virtual void ExecuteBuild()
{ {
var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName); var fileNameStyle = AssetBundleBuilderSetting.GetPackageFileNameStyle(PackageName, PipelineName);
var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName); var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName);
var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName); var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName);
var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, PipelineName); var compressOption = AssetBundleBuilderSetting.GetPackageCompressOption(PackageName, PipelineName);
var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName); var clearBuildCache = AssetBundleBuilderSetting.GetPackageClearBuildCache(PackageName, PipelineName);
var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName); var useAssetDependencyDB = AssetBundleBuilderSetting.GetPackageUseAssetDependencyDB(PackageName, PipelineName);
ScriptableBuildParameters buildParameters = new ScriptableBuildParameters(); ScriptableBuildParameters buildParameters = new ScriptableBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuildinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot();
buildParameters.BuildPipeline = PipelineName.ToString(); buildParameters.BuildPipeline = PipelineName.ToString();
buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle; buildParameters.BuildBundleType = (int)EBuildBundleType.AssetBundle;
buildParameters.BuildTarget = BuildTarget; buildParameters.BuildTarget = BuildTarget;
@@ -116,8 +116,8 @@ namespace YooAsset.Editor
buildParameters.EnableSharePackRule = true; buildParameters.EnableSharePackRule = true;
buildParameters.VerifyBuildingResult = true; buildParameters.VerifyBuildingResult = true;
buildParameters.FileNameStyle = fileNameStyle; buildParameters.FileNameStyle = fileNameStyle;
buildParameters.BuildinFileCopyOption = buildinFileCopyOption; buildParameters.BuiltinFileCopyOption = builtinFileCopyOption;
buildParameters.BuildinFileCopyParams = buildinFileCopyParams; buildParameters.BuiltinFileCopyParams = builtinFileCopyParams;
buildParameters.CompressOption = compressOption; buildParameters.CompressOption = compressOption;
buildParameters.ClearBuildCacheFiles = clearBuildCache; buildParameters.ClearBuildCacheFiles = clearBuildCache;
buildParameters.UseAssetDependencyDB = useAssetDependencyDB; buildParameters.UseAssetDependencyDB = useAssetDependencyDB;

View File

@@ -7,8 +7,8 @@
<ui:VisualElement name="PopupContainer" style="flex-grow: 1;" /> <ui:VisualElement name="PopupContainer" style="flex-grow: 1;" />
<uie:EnumField label="Compression" value="Center" name="Compression" /> <uie:EnumField label="Compression" value="Center" name="Compression" />
<uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" /> <uie:EnumField label="File Name Style" value="Center" name="FileNameStyle" />
<uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" /> <uie:EnumField label="Copy Builtin File Option" value="Center" name="CopyBuiltinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" />
<ui:VisualElement name="ExtensionContainer" /> <ui:VisualElement name="ExtensionContainer" />
<ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" /> <ui:Button text="Click Build" display-tooltip-when-elided="true" name="Build" style="height: 50px; background-color: rgb(40, 106, 42); margin-top: 10px;" />
</ui:VisualElement> </ui:VisualElement>

View File

@@ -1,89 +0,0 @@

namespace YooAsset
{
internal class DBFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
{
private enum ESteps
{
None,
RequestBuildinPackageHash,
LoadBuildinPackageManifest,
Done,
}
private readonly DefaultBuildinFileSystem _fileSystem;
private readonly string _packageVersion;
private RequestBuildinPackageHashOperation _requestBuildinPackageHashOp;
private LoadBuildinPackageManifestOperation _loadBuildinPackageManifestOp;
private ESteps _steps = ESteps.None;
public DBFSLoadPackageManifestOperation(DefaultBuildinFileSystem fileSystem, string packageVersion)
{
_fileSystem = fileSystem;
_packageVersion = packageVersion;
}
internal override void InternalStart()
{
_steps = ESteps.RequestBuildinPackageHash;
}
internal override void InternalUpdate()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
if (_steps == ESteps.RequestBuildinPackageHash)
{
if (_requestBuildinPackageHashOp == null)
{
_requestBuildinPackageHashOp = new RequestBuildinPackageHashOperation(_fileSystem, _packageVersion);
_requestBuildinPackageHashOp.StartOperation();
AddChildOperation(_requestBuildinPackageHashOp);
}
_requestBuildinPackageHashOp.UpdateOperation();
if (_requestBuildinPackageHashOp.IsDone == false)
return;
if (_requestBuildinPackageHashOp.Status == EOperationStatus.Succeed)
{
_steps = ESteps.LoadBuildinPackageManifest;
}
else
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _requestBuildinPackageHashOp.Error;
}
}
if (_steps == ESteps.LoadBuildinPackageManifest)
{
if (_loadBuildinPackageManifestOp == null)
{
string packageHash = _requestBuildinPackageHashOp.PackageHash;
_loadBuildinPackageManifestOp = new LoadBuildinPackageManifestOperation(_fileSystem, _packageVersion, packageHash);
_loadBuildinPackageManifestOp.StartOperation();
AddChildOperation(_loadBuildinPackageManifestOp);
}
_loadBuildinPackageManifestOp.UpdateOperation();
if (_loadBuildinPackageManifestOp.IsDone == false)
return;
if (_loadBuildinPackageManifestOp.Status == EOperationStatus.Succeed)
{
_steps = ESteps.Done;
Manifest = _loadBuildinPackageManifestOp.Manifest;
Status = EOperationStatus.Succeed;
}
else
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _loadBuildinPackageManifestOp.Error;
}
}
}
}
}

View File

@@ -53,10 +53,10 @@ namespace YooAsset
} }
// 创建内置清单实例 // 创建内置清单实例
var buildinFileCatalog = new DefaultBuildinFileCatalog(); var builtinFileCatalog = new DefaultBuiltinFileCatalog();
buildinFileCatalog.FileVersion = CatalogDefine.FileVersion; builtinFileCatalog.FileVersion = CatalogDefine.FileVersion;
buildinFileCatalog.PackageName = packageName; builtinFileCatalog.PackageName = packageName;
buildinFileCatalog.PackageVersion = packageVersion; builtinFileCatalog.PackageVersion = packageVersion;
// 创建白名单查询集合 // 创建白名单查询集合
HashSet<string> whiteFileList = new HashSet<string> HashSet<string> whiteFileList = new HashSet<string>
@@ -68,8 +68,8 @@ namespace YooAsset
$"{packageName}_{packageVersion}.hash", $"{packageName}_{packageVersion}.hash",
$"{packageName}_{packageVersion}.json", $"{packageName}_{packageVersion}.json",
$"{packageName}_{packageVersion}.report", $"{packageName}_{packageVersion}.report",
DefaultBuildinFileSystemDefine.BuildinCatalogJsonFileName, DefaultBuiltinFileSystemDefine.BuiltinCatalogJsonFileName,
DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName
}; };
// 记录所有内置资源文件 // 记录所有内置资源文件
@@ -86,10 +86,10 @@ namespace YooAsset
string fileName = fileInfo.Name; string fileName = fileInfo.Name;
if (fileMapping.TryGetValue(fileName, out string bundleGUID)) if (fileMapping.TryGetValue(fileName, out string bundleGUID))
{ {
var wrapper = new DefaultBuildinFileCatalog.FileWrapper(); var wrapper = new DefaultBuiltinFileCatalog.FileWrapper();
wrapper.BundleGUID = bundleGUID; wrapper.BundleGUID = bundleGUID;
wrapper.FileName = fileName; wrapper.FileName = fileName;
buildinFileCatalog.Wrappers.Add(wrapper); builtinFileCatalog.Wrappers.Add(wrapper);
} }
else else
{ {
@@ -98,16 +98,16 @@ namespace YooAsset
} }
// 创建输出文件 // 创建输出文件
string jsonFilePath = $"{packageDirectory}/{DefaultBuildinFileSystemDefine.BuildinCatalogJsonFileName}"; string jsonFilePath = $"{packageDirectory}/{DefaultBuiltinFileSystemDefine.BuiltinCatalogJsonFileName}";
if (File.Exists(jsonFilePath)) if (File.Exists(jsonFilePath))
File.Delete(jsonFilePath); File.Delete(jsonFilePath);
SerializeToJson(jsonFilePath, buildinFileCatalog); SerializeToJson(jsonFilePath, builtinFileCatalog);
// 创建输出文件 // 创建输出文件
string binaryFilePath = $"{packageDirectory}/{DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName}"; string binaryFilePath = $"{packageDirectory}/{DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName}";
if (File.Exists(binaryFilePath)) if (File.Exists(binaryFilePath))
File.Delete(binaryFilePath); File.Delete(binaryFilePath);
SerializeToBinary(binaryFilePath, buildinFileCatalog); SerializeToBinary(binaryFilePath, builtinFileCatalog);
UnityEditor.AssetDatabase.Refresh(); UnityEditor.AssetDatabase.Refresh();
Debug.Log($"Succeed to save catalog file : {binaryFilePath}"); Debug.Log($"Succeed to save catalog file : {binaryFilePath}");
@@ -118,7 +118,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 序列化JSON文件 /// 序列化JSON文件
/// </summary> /// </summary>
public static void SerializeToJson(string savePath, DefaultBuildinFileCatalog catalog) public static void SerializeToJson(string savePath, DefaultBuiltinFileCatalog catalog)
{ {
string json = JsonUtility.ToJson(catalog, true); string json = JsonUtility.ToJson(catalog, true);
FileUtility.WriteAllText(savePath, json); FileUtility.WriteAllText(savePath, json);
@@ -127,15 +127,15 @@ namespace YooAsset
/// <summary> /// <summary>
/// 反序列化JSON文件 /// 反序列化JSON文件
/// </summary> /// </summary>
public static DefaultBuildinFileCatalog DeserializeFromJson(string jsonContent) public static DefaultBuiltinFileCatalog DeserializeFromJson(string jsonContent)
{ {
return JsonUtility.FromJson<DefaultBuildinFileCatalog>(jsonContent); return JsonUtility.FromJson<DefaultBuiltinFileCatalog>(jsonContent);
} }
/// <summary> /// <summary>
/// 序列化(二进制文件) /// 序列化(二进制文件)
/// </summary> /// </summary>
public static void SerializeToBinary(string savePath, DefaultBuildinFileCatalog catalog) public static void SerializeToBinary(string savePath, DefaultBuiltinFileCatalog catalog)
{ {
using (FileStream fs = new FileStream(savePath, FileMode.Create)) using (FileStream fs = new FileStream(savePath, FileMode.Create))
{ {
@@ -170,7 +170,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 反序列化(二进制文件) /// 反序列化(二进制文件)
/// </summary> /// </summary>
public static DefaultBuildinFileCatalog DeserializeFromBinary(byte[] binaryData) public static DefaultBuiltinFileCatalog DeserializeFromBinary(byte[] binaryData)
{ {
// 创建缓存器 // 创建缓存器
BufferReader buffer = new BufferReader(binaryData); BufferReader buffer = new BufferReader(binaryData);
@@ -185,7 +185,7 @@ namespace YooAsset
if (fileVersion != CatalogDefine.FileVersion) if (fileVersion != CatalogDefine.FileVersion)
throw new Exception($"The catalog file version are not compatible : {fileVersion} != {CatalogDefine.FileVersion}"); throw new Exception($"The catalog file version are not compatible : {fileVersion} != {CatalogDefine.FileVersion}");
DefaultBuildinFileCatalog catalog = new DefaultBuildinFileCatalog(); DefaultBuiltinFileCatalog catalog = new DefaultBuiltinFileCatalog();
{ {
// 读取文件头信息 // 读取文件头信息
catalog.FileVersion = fileVersion; catalog.FileVersion = fileVersion;
@@ -194,10 +194,10 @@ namespace YooAsset
// 读取资源包列表 // 读取资源包列表
int fileCount = buffer.ReadInt32(); int fileCount = buffer.ReadInt32();
catalog.Wrappers = new List<DefaultBuildinFileCatalog.FileWrapper>(fileCount); catalog.Wrappers = new List<DefaultBuiltinFileCatalog.FileWrapper>(fileCount);
for (int i = 0; i < fileCount; i++) for (int i = 0; i < fileCount; i++)
{ {
var fileWrapper = new DefaultBuildinFileCatalog.FileWrapper(); var fileWrapper = new DefaultBuiltinFileCatalog.FileWrapper();
fileWrapper.BundleGUID = buffer.ReadUTF8(); fileWrapper.BundleGUID = buffer.ReadUTF8();
fileWrapper.FileName = buffer.ReadUTF8(); fileWrapper.FileName = buffer.ReadUTF8();
catalog.Wrappers.Add(fileWrapper); catalog.Wrappers.Add(fileWrapper);

View File

@@ -8,7 +8,7 @@ namespace YooAsset
/// 内置资源清单目录 /// 内置资源清单目录
/// </summary> /// </summary>
[Serializable] [Serializable]
internal class DefaultBuildinFileCatalog internal class DefaultBuiltinFileCatalog
{ {
[Serializable] [Serializable]
public class FileWrapper public class FileWrapper

View File

@@ -8,7 +8,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 内置文件系统 /// 内置文件系统
/// </summary> /// </summary>
internal class DefaultBuildinFileSystem : IFileSystem internal class DefaultBuiltinFileSystem : IFileSystem
{ {
public class FileWrapper public class FileWrapper
{ {
@@ -21,7 +21,7 @@ namespace YooAsset
} }
protected readonly Dictionary<string, FileWrapper> _wrappers = new Dictionary<string, FileWrapper>(10000); protected readonly Dictionary<string, FileWrapper> _wrappers = new Dictionary<string, FileWrapper>(10000);
protected readonly Dictionary<string, string> _buildinFilePathMapping = new Dictionary<string, string>(10000); protected readonly Dictionary<string, string> _builtinFilePathMapping = new Dictionary<string, string>(10000);
protected IFileSystem _unpackFileSystem; protected IFileSystem _unpackFileSystem;
protected string _packageRoot; protected string _packageRoot;
@@ -81,16 +81,16 @@ namespace YooAsset
/// <summary> /// <summary>
/// 自定义参数:拷贝内置清单 /// 自定义参数:拷贝内置清单
/// </summary> /// </summary>
public bool CopyBuildinPackageManifest { private set; get; } = false; public bool CopyBuiltinPackageManifest { private set; get; } = false;
/// <summary> /// <summary>
/// 自定义参数:拷贝内置清单的目标目录 /// 自定义参数:拷贝内置清单的目标目录
/// 注意:该参数为空的时候,会获取默认的沙盒目录! /// 注意:该参数为空的时候,会获取默认的沙盒目录!
/// </summary> /// </summary>
public string CopyBuildinPackageManifestDestRoot { private set; get; } public string CopyBuiltinPackageManifestDestRoot { private set; get; }
/// <summary> /// <summary>
/// 自定义参数:解密方法 /// 自定义参数:解密服务接口的实例
/// </summary> /// </summary>
public IDecryptionServices DecryptionServices { private set; get; } public IDecryptionServices DecryptionServices { private set; get; }
@@ -100,13 +100,13 @@ namespace YooAsset
public IManifestRestoreServices ManifestServices { private set; get; } public IManifestRestoreServices ManifestServices { private set; get; }
/// <summary> /// <summary>
/// 自定义参数:拷贝内置文件服务 /// 自定义参数:拷贝内置文件接口的实例
/// </summary> /// </summary>
public ICopyLocalFileServices CopyLocalFileServices { private set; get; } public ICopyLocalFileServices CopyLocalFileServices { private set; get; }
#endregion #endregion
public DefaultBuildinFileSystem() public DefaultBuiltinFileSystem()
{ {
} }
public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync()
@@ -131,7 +131,7 @@ namespace YooAsset
public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadFileOptions options) public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadFileOptions options)
{ {
// 注意:业务层的解压器会依赖该方法 // 注意:业务层的解压器会依赖该方法
options.ImportFilePath = GetBuildinFileLoadPath(bundle); options.ImportFilePath = GetBuiltinFileLoadPath(bundle);
return _unpackFileSystem.DownloadFileAsync(bundle, options); return _unpackFileSystem.DownloadFileAsync(bundle, options);
} }
public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle) public virtual FSLoadBundleOperation LoadBundleFile(PackageBundle bundle)
@@ -153,7 +153,7 @@ namespace YooAsset
} }
else else
{ {
string error = $"{nameof(DefaultBuildinFileSystem)} not support load bundle type : {bundle.BundleType}"; string error = $"{nameof(DefaultBuiltinFileSystem)} not support load bundle type : {bundle.BundleType}";
var operation = new FSLoadBundleCompleteOperation(error); var operation = new FSLoadBundleCompleteOperation(error);
return operation; return operation;
} }
@@ -184,11 +184,11 @@ namespace YooAsset
} }
else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST) else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST)
{ {
CopyBuildinPackageManifest = Convert.ToBoolean(value); CopyBuiltinPackageManifest = Convert.ToBoolean(value);
} }
else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT) else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT)
{ {
CopyBuildinPackageManifestDestRoot = (string)value; CopyBuiltinPackageManifestDestRoot = (string)value;
} }
else if (name == FileSystemParametersDefine.DECRYPTION_SERVICES) else if (name == FileSystemParametersDefine.DECRYPTION_SERVICES)
{ {
@@ -212,7 +212,7 @@ namespace YooAsset
PackageName = packageName; PackageName = packageName;
if (string.IsNullOrEmpty(packageRoot)) if (string.IsNullOrEmpty(packageRoot))
_packageRoot = GetDefaultBuildinPackageRoot(packageName); _packageRoot = GetDefaultBuiltinPackageRoot(packageName);
else else
_packageRoot = packageRoot; _packageRoot = packageRoot;
@@ -269,7 +269,7 @@ namespace YooAsset
if (IsUnpackBundleFile(bundle)) if (IsUnpackBundleFile(bundle))
return _unpackFileSystem.GetBundleFilePath(bundle); return _unpackFileSystem.GetBundleFilePath(bundle);
return GetBuildinFileLoadPath(bundle); return GetBuiltinFileLoadPath(bundle);
} }
public virtual byte[] ReadBundleFileData(PackageBundle bundle) public virtual byte[] ReadBundleFileData(PackageBundle bundle)
{ {
@@ -281,7 +281,7 @@ namespace YooAsset
#if UNITY_ANDROID #if UNITY_ANDROID
//TODO : 安卓平台内置文件属于APK压缩包内的文件。 //TODO : 安卓平台内置文件属于APK压缩包内的文件。
YooLogger.Error($"Android platform not support read buildin bundle file data !"); YooLogger.Error($"Android platform not support read builtin bundle file data !");
return null; return null;
#else #else
if (bundle.Encrypted) if (bundle.Encrypted)
@@ -292,7 +292,7 @@ namespace YooAsset
return null; return null;
} }
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -303,7 +303,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
return FileUtility.ReadAllBytes(filePath); return FileUtility.ReadAllBytes(filePath);
} }
#endif #endif
@@ -318,7 +318,7 @@ namespace YooAsset
#if UNITY_ANDROID #if UNITY_ANDROID
//TODO : 安卓平台内置文件属于APK压缩包内的文件。 //TODO : 安卓平台内置文件属于APK压缩包内的文件。
YooLogger.Error($"Android platform not support read buildin bundle file text !"); YooLogger.Error($"Android platform not support read builtin bundle file text !");
return null; return null;
#else #else
if (bundle.Encrypted) if (bundle.Encrypted)
@@ -329,7 +329,7 @@ namespace YooAsset
return null; return null;
} }
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -340,7 +340,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
return FileUtility.ReadAllText(filePath); return FileUtility.ReadAllText(filePath);
} }
#endif #endif
@@ -368,38 +368,38 @@ namespace YooAsset
} }
#region #region
protected string GetDefaultBuildinPackageRoot(string packageName) protected string GetDefaultBuiltinPackageRoot(string packageName)
{ {
string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot(); string rootDirectory = YooAssetSettingsData.GetYooDefaultBuiltinRoot();
return PathUtility.Combine(rootDirectory, packageName); return PathUtility.Combine(rootDirectory, packageName);
} }
public string GetBuildinFileLoadPath(PackageBundle bundle) public string GetBuiltinFileLoadPath(PackageBundle bundle)
{ {
if (_buildinFilePathMapping.TryGetValue(bundle.BundleGUID, out string filePath) == false) if (_builtinFilePathMapping.TryGetValue(bundle.BundleGUID, out string filePath) == false)
{ {
filePath = PathUtility.Combine(_packageRoot, bundle.FileName); filePath = PathUtility.Combine(_packageRoot, bundle.FileName);
_buildinFilePathMapping.Add(bundle.BundleGUID, filePath); _builtinFilePathMapping.Add(bundle.BundleGUID, filePath);
} }
return filePath; return filePath;
} }
public string GetBuildinPackageVersionFilePath() public string GetBuiltinPackageVersionFilePath()
{ {
string fileName = YooAssetSettingsData.GetPackageVersionFileName(PackageName); string fileName = YooAssetSettingsData.GetPackageVersionFileName(PackageName);
return PathUtility.Combine(_packageRoot, fileName); return PathUtility.Combine(_packageRoot, fileName);
} }
public string GetBuildinPackageHashFilePath(string packageVersion) public string GetBuiltinPackageHashFilePath(string packageVersion)
{ {
string fileName = YooAssetSettingsData.GetPackageHashFileName(PackageName, packageVersion); string fileName = YooAssetSettingsData.GetPackageHashFileName(PackageName, packageVersion);
return PathUtility.Combine(_packageRoot, fileName); return PathUtility.Combine(_packageRoot, fileName);
} }
public string GetBuildinPackageManifestFilePath(string packageVersion) public string GetBuiltinPackageManifestFilePath(string packageVersion)
{ {
string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion); string fileName = YooAssetSettingsData.GetManifestBinaryFileName(PackageName, packageVersion);
return PathUtility.Combine(_packageRoot, fileName); return PathUtility.Combine(_packageRoot, fileName);
} }
public string GetCatalogBinaryFileLoadPath() public string GetCatalogBinaryFileLoadPath()
{ {
return PathUtility.Combine(_packageRoot, DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName); return PathUtility.Combine(_packageRoot, DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName);
} }
/// <summary> /// <summary>
@@ -409,7 +409,7 @@ namespace YooAsset
{ {
if (_wrappers.ContainsKey(bundleGUID)) if (_wrappers.ContainsKey(bundleGUID))
{ {
YooLogger.Error($"{nameof(DefaultBuildinFileSystem)} has element : {bundleGUID}"); YooLogger.Error($"{nameof(DefaultBuiltinFileSystem)} has element : {bundleGUID}");
return false; return false;
} }
@@ -430,7 +430,7 @@ namespace YooAsset
/// </summary> /// </summary>
public DecryptResult LoadEncryptedAssetBundle(PackageBundle bundle) public DecryptResult LoadEncryptedAssetBundle(PackageBundle bundle)
{ {
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -445,7 +445,7 @@ namespace YooAsset
/// </summary> /// </summary>
public DecryptResult LoadEncryptedAssetBundleAsync(PackageBundle bundle) public DecryptResult LoadEncryptedAssetBundleAsync(PackageBundle bundle)
{ {
string filePath = GetBuildinFileLoadPath(bundle); string filePath = GetBuiltinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,

View File

@@ -1,16 +1,16 @@
 
namespace YooAsset namespace YooAsset
{ {
internal class DefaultBuildinFileSystemDefine internal class DefaultBuiltinFileSystemDefine
{ {
/// <summary> /// <summary>
/// 内置清单JSON文件名称 /// 内置清单JSON文件名称
/// </summary> /// </summary>
public const string BuildinCatalogJsonFileName = "BuildinCatalog.json"; public const string BuiltinCatalogJsonFileName = "BuiltinCatalog.json";
/// <summary> /// <summary>
/// 内置清单二进制文件名称 /// 内置清单二进制文件名称
/// </summary> /// </summary>
public const string BuildinCatalogBinaryFileName = "BuildinCatalog.bytes"; public const string BuiltinCatalogBinaryFileName = "BuiltinCatalog.bytes";
} }
} }

View File

@@ -8,23 +8,23 @@ namespace YooAsset
private enum ESteps private enum ESteps
{ {
None, None,
LoadBuildinPackageVersion, LoadBuiltinPackageVersion,
CopyBuildinPackageHash, CopyBuiltinPackageHash,
CopyBuildinPackageManifest, CopyBuiltinPackageManifest,
InitUnpackFileSystem, InitUnpackFileSystem,
LoadCatalogFile, LoadCatalogFile,
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private RequestBuildinPackageVersionOperation _requestBuildinPackageVersionOp; private RequestBuiltinPackageVersionOperation _requestBuiltinPackageVersionOp;
private CopyBuildinFileOperation _copyBuildinHashFileOp; private CopyBuiltinFileOperation _copyBuiltinHashFileOp;
private CopyBuildinFileOperation _copyBuildinManifestFileOp; private CopyBuiltinFileOperation _copyBuiltinManifestFileOp;
private FSInitializeFileSystemOperation _initUnpackFIleSystemOp; private FSInitializeFileSystemOperation _initUnpackFIleSystemOp;
private LoadBuildinCatalogFileOperation _loadBuildinCatalogFileOp; private LoadBuiltinCatalogFileOperation _loadBuiltinCatalogFileOp;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSInitializeOperation(DefaultBuildinFileSystem fileSystem) internal DBFSInitializeOperation(DefaultBuiltinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
@@ -33,10 +33,10 @@ namespace YooAsset
#if UNITY_WEBGL #if UNITY_WEBGL
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"{nameof(DefaultBuildinFileSystem)} is not support WEBGL platform !"; Error = $"{nameof(DefaultBuiltinFileSystem)} is not support WEBGL platform !";
#else #else
if (_fileSystem.CopyBuildinPackageManifest) if (_fileSystem.CopyBuiltinPackageManifest)
_steps = ESteps.LoadBuildinPackageVersion; _steps = ESteps.LoadBuiltinPackageVersion;
else else
_steps = ESteps.InitUnpackFileSystem; _steps = ESteps.InitUnpackFileSystem;
#endif #endif
@@ -46,76 +46,76 @@ namespace YooAsset
if (_steps == ESteps.None || _steps == ESteps.Done) if (_steps == ESteps.None || _steps == ESteps.Done)
return; return;
if (_steps == ESteps.LoadBuildinPackageVersion) if (_steps == ESteps.LoadBuiltinPackageVersion)
{ {
if (_requestBuildinPackageVersionOp == null) if (_requestBuiltinPackageVersionOp == null)
{ {
_requestBuildinPackageVersionOp = new RequestBuildinPackageVersionOperation(_fileSystem); _requestBuiltinPackageVersionOp = new RequestBuiltinPackageVersionOperation(_fileSystem);
_requestBuildinPackageVersionOp.StartOperation(); _requestBuiltinPackageVersionOp.StartOperation();
AddChildOperation(_requestBuildinPackageVersionOp); AddChildOperation(_requestBuiltinPackageVersionOp);
} }
_requestBuildinPackageVersionOp.UpdateOperation(); _requestBuiltinPackageVersionOp.UpdateOperation();
if (_requestBuildinPackageVersionOp.IsDone == false) if (_requestBuiltinPackageVersionOp.IsDone == false)
return; return;
if (_requestBuildinPackageVersionOp.Status == EOperationStatus.Succeed) if (_requestBuiltinPackageVersionOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.CopyBuildinPackageHash; _steps = ESteps.CopyBuiltinPackageHash;
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _requestBuildinPackageVersionOp.Error; Error = _requestBuiltinPackageVersionOp.Error;
} }
} }
if (_steps == ESteps.CopyBuildinPackageHash) if (_steps == ESteps.CopyBuiltinPackageHash)
{ {
if (_copyBuildinHashFileOp == null) if (_copyBuiltinHashFileOp == null)
{ {
string packageVersion = _requestBuildinPackageVersionOp.PackageVersion; string packageVersion = _requestBuiltinPackageVersionOp.PackageVersion;
string destFilePath = GetCopyPackageHashDestPath(packageVersion); string destFilePath = GetCopyPackageHashDestPath(packageVersion);
string sourceFilePath = _fileSystem.GetBuildinPackageHashFilePath(packageVersion); string sourceFilePath = _fileSystem.GetBuiltinPackageHashFilePath(packageVersion);
_copyBuildinHashFileOp = new CopyBuildinFileOperation(sourceFilePath, destFilePath); _copyBuiltinHashFileOp = new CopyBuiltinFileOperation(sourceFilePath, destFilePath);
_copyBuildinHashFileOp.StartOperation(); _copyBuiltinHashFileOp.StartOperation();
AddChildOperation(_copyBuildinHashFileOp); AddChildOperation(_copyBuiltinHashFileOp);
} }
_copyBuildinHashFileOp.UpdateOperation(); _copyBuiltinHashFileOp.UpdateOperation();
if (_copyBuildinHashFileOp.IsDone == false) if (_copyBuiltinHashFileOp.IsDone == false)
return; return;
if (_copyBuildinHashFileOp.Status == EOperationStatus.Succeed) if (_copyBuiltinHashFileOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.CopyBuildinPackageManifest; _steps = ESteps.CopyBuiltinPackageManifest;
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _copyBuildinHashFileOp.Error; Error = _copyBuiltinHashFileOp.Error;
} }
} }
if (_steps == ESteps.CopyBuildinPackageManifest) if (_steps == ESteps.CopyBuiltinPackageManifest)
{ {
if (_copyBuildinManifestFileOp == null) if (_copyBuiltinManifestFileOp == null)
{ {
string packageVersion = _requestBuildinPackageVersionOp.PackageVersion; string packageVersion = _requestBuiltinPackageVersionOp.PackageVersion;
string destFilePath = GetCopyPackageManifestDestPath(packageVersion); string destFilePath = GetCopyPackageManifestDestPath(packageVersion);
string sourceFilePath = _fileSystem.GetBuildinPackageManifestFilePath(packageVersion); string sourceFilePath = _fileSystem.GetBuiltinPackageManifestFilePath(packageVersion);
_copyBuildinManifestFileOp = new CopyBuildinFileOperation(sourceFilePath, destFilePath); _copyBuiltinManifestFileOp = new CopyBuiltinFileOperation(sourceFilePath, destFilePath);
_copyBuildinManifestFileOp.StartOperation(); _copyBuiltinManifestFileOp.StartOperation();
AddChildOperation(_copyBuildinManifestFileOp); AddChildOperation(_copyBuiltinManifestFileOp);
} }
_copyBuildinManifestFileOp.UpdateOperation(); _copyBuiltinManifestFileOp.UpdateOperation();
if (_copyBuildinManifestFileOp.IsDone == false) if (_copyBuiltinManifestFileOp.IsDone == false)
return; return;
if (_copyBuildinManifestFileOp.Status == EOperationStatus.Succeed) if (_copyBuiltinManifestFileOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.InitUnpackFileSystem; _steps = ESteps.InitUnpackFileSystem;
} }
@@ -123,7 +123,7 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _copyBuildinManifestFileOp.Error; Error = _copyBuiltinManifestFileOp.Error;
} }
} }
@@ -163,20 +163,20 @@ namespace YooAsset
if (_steps == ESteps.LoadCatalogFile) if (_steps == ESteps.LoadCatalogFile)
{ {
if (_loadBuildinCatalogFileOp == null) if (_loadBuiltinCatalogFileOp == null)
{ {
_loadBuildinCatalogFileOp = new LoadBuildinCatalogFileOperation(_fileSystem); _loadBuiltinCatalogFileOp = new LoadBuiltinCatalogFileOperation(_fileSystem);
_loadBuildinCatalogFileOp.StartOperation(); _loadBuiltinCatalogFileOp.StartOperation();
AddChildOperation(_loadBuildinCatalogFileOp); AddChildOperation(_loadBuiltinCatalogFileOp);
} }
_loadBuildinCatalogFileOp.UpdateOperation(); _loadBuiltinCatalogFileOp.UpdateOperation();
if (_loadBuildinCatalogFileOp.IsDone == false) if (_loadBuiltinCatalogFileOp.IsDone == false)
return; return;
if (_loadBuildinCatalogFileOp.Status == EOperationStatus.Succeed) if (_loadBuiltinCatalogFileOp.Status == EOperationStatus.Succeed)
{ {
var catalog = _loadBuildinCatalogFileOp.Catalog; var catalog = _loadBuiltinCatalogFileOp.Catalog;
if (catalog == null) if (catalog == null)
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
@@ -195,11 +195,11 @@ namespace YooAsset
foreach (var wrapper in catalog.Wrappers) foreach (var wrapper in catalog.Wrappers)
{ {
var fileWrapper = new DefaultBuildinFileSystem.FileWrapper(wrapper.FileName); var fileWrapper = new DefaultBuiltinFileSystem.FileWrapper(wrapper.FileName);
_fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper); _fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper);
} }
YooLogger.Log($"Package '{_fileSystem.PackageName}' buildin catalog files count : {catalog.Wrappers.Count}"); YooLogger.Log($"Package '{_fileSystem.PackageName}' builtin catalog files count : {catalog.Wrappers.Count}");
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Succeed; Status = EOperationStatus.Succeed;
} }
@@ -207,14 +207,14 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _loadBuildinCatalogFileOp.Error; Error = _loadBuiltinCatalogFileOp.Error;
} }
} }
} }
private string GetCopyManifestFileRoot() private string GetCopyManifestFileRoot()
{ {
string destRoot = _fileSystem.CopyBuildinPackageManifestDestRoot; string destRoot = _fileSystem.CopyBuiltinPackageManifestDestRoot;
if (string.IsNullOrEmpty(destRoot)) if (string.IsNullOrEmpty(destRoot))
{ {
string defaultCacheRoot = YooAssetSettingsData.GetYooDefaultCacheRoot(); string defaultCacheRoot = YooAssetSettingsData.GetYooDefaultCacheRoot();

View File

@@ -16,7 +16,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private readonly PackageBundle _bundle; private readonly PackageBundle _bundle;
private AssetBundleCreateRequest _createRequest; private AssetBundleCreateRequest _createRequest;
private AssetBundle _assetBundle; private AssetBundle _assetBundle;
@@ -24,7 +24,7 @@ namespace YooAsset
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSLoadAssetBundleOperation(DefaultBuildinFileSystem fileSystem, PackageBundle bundle) internal DBFSLoadAssetBundleOperation(DefaultBuiltinFileSystem fileSystem, PackageBundle bundle)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
_bundle = bundle; _bundle = bundle;
@@ -64,7 +64,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = _fileSystem.GetBuildinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle);
_assetBundle = AssetBundle.LoadFromFile(filePath); _assetBundle = AssetBundle.LoadFromFile(filePath);
} }
} }
@@ -78,7 +78,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = _fileSystem.GetBuildinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle);
_createRequest = AssetBundle.LoadFromFileAsync(filePath); _createRequest = AssetBundle.LoadFromFileAsync(filePath);
} }
} }
@@ -110,14 +110,14 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Failed to load encrypted buildin asset bundle file : {_bundle.BundleName}"; Error = $"Failed to load encrypted builtin asset bundle file : {_bundle.BundleName}";
YooLogger.Error(Error); YooLogger.Error(Error);
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Failed to load buildin asset bundle file : {_bundle.BundleName}"; Error = $"Failed to load builtin asset bundle file : {_bundle.BundleName}";
YooLogger.Error(Error); YooLogger.Error(Error);
} }
} }
@@ -150,16 +150,16 @@ namespace YooAsset
private enum ESteps private enum ESteps
{ {
None, None,
LoadBuildinRawBundle, LoadBuiltinRawBundle,
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private readonly PackageBundle _bundle; private readonly PackageBundle _bundle;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSLoadRawBundleOperation(DefaultBuildinFileSystem fileSystem, PackageBundle bundle) internal DBFSLoadRawBundleOperation(DefaultBuiltinFileSystem fileSystem, PackageBundle bundle)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
_bundle = bundle; _bundle = bundle;
@@ -168,22 +168,22 @@ namespace YooAsset
{ {
DownloadProgress = 1f; DownloadProgress = 1f;
DownloadedBytes = _bundle.FileSize; DownloadedBytes = _bundle.FileSize;
_steps = ESteps.LoadBuildinRawBundle; _steps = ESteps.LoadBuiltinRawBundle;
} }
internal override void InternalUpdate() internal override void InternalUpdate()
{ {
if (_steps == ESteps.None || _steps == ESteps.Done) if (_steps == ESteps.None || _steps == ESteps.Done)
return; return;
if (_steps == ESteps.LoadBuildinRawBundle) if (_steps == ESteps.LoadBuiltinRawBundle)
{ {
string filePath = _fileSystem.GetBuildinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle);
#if UNITY_ANDROID #if UNITY_ANDROID
//TODO : 安卓平台内置文件属于APK压缩包内的文件。 //TODO : 安卓平台内置文件属于APK压缩包内的文件。
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Can not load android buildin raw bundle file : {filePath}"; Error = $"Can not load android builtin raw bundle file : {filePath}";
YooLogger.Error(Error); YooLogger.Error(Error);
#else #else
if (File.Exists(filePath)) if (File.Exists(filePath))
@@ -196,7 +196,7 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Can not found buildin raw bundle file : {filePath}"; Error = $"Can not found builtin raw bundle file : {filePath}";
YooLogger.Error(Error); YooLogger.Error(Error);
} }
#endif #endif

View File

@@ -0,0 +1,89 @@

namespace YooAsset
{
internal class DBFSLoadPackageManifestOperation : FSLoadPackageManifestOperation
{
private enum ESteps
{
None,
RequestBuiltinPackageHash,
LoadBuiltinPackageManifest,
Done,
}
private readonly DefaultBuiltinFileSystem _fileSystem;
private readonly string _packageVersion;
private RequestBuiltinPackageHashOperation _requestBuiltinPackageHashOp;
private LoadBuiltinPackageManifestOperation _loadBuiltinPackageManifestOp;
private ESteps _steps = ESteps.None;
public DBFSLoadPackageManifestOperation(DefaultBuiltinFileSystem fileSystem, string packageVersion)
{
_fileSystem = fileSystem;
_packageVersion = packageVersion;
}
internal override void InternalStart()
{
_steps = ESteps.RequestBuiltinPackageHash;
}
internal override void InternalUpdate()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
if (_steps == ESteps.RequestBuiltinPackageHash)
{
if (_requestBuiltinPackageHashOp == null)
{
_requestBuiltinPackageHashOp = new RequestBuiltinPackageHashOperation(_fileSystem, _packageVersion);
_requestBuiltinPackageHashOp.StartOperation();
AddChildOperation(_requestBuiltinPackageHashOp);
}
_requestBuiltinPackageHashOp.UpdateOperation();
if (_requestBuiltinPackageHashOp.IsDone == false)
return;
if (_requestBuiltinPackageHashOp.Status == EOperationStatus.Succeed)
{
_steps = ESteps.LoadBuiltinPackageManifest;
}
else
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _requestBuiltinPackageHashOp.Error;
}
}
if (_steps == ESteps.LoadBuiltinPackageManifest)
{
if (_loadBuiltinPackageManifestOp == null)
{
string packageHash = _requestBuiltinPackageHashOp.PackageHash;
_loadBuiltinPackageManifestOp = new LoadBuiltinPackageManifestOperation(_fileSystem, _packageVersion, packageHash);
_loadBuiltinPackageManifestOp.StartOperation();
AddChildOperation(_loadBuiltinPackageManifestOp);
}
_loadBuiltinPackageManifestOp.UpdateOperation();
if (_loadBuiltinPackageManifestOp.IsDone == false)
return;
if (_loadBuiltinPackageManifestOp.Status == EOperationStatus.Succeed)
{
_steps = ESteps.Done;
Manifest = _loadBuiltinPackageManifestOp.Manifest;
Status = EOperationStatus.Succeed;
}
else
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = _loadBuiltinPackageManifestOp.Error;
}
}
}
}
}

View File

@@ -10,12 +10,12 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private RequestBuildinPackageVersionOperation _requestBuildinPackageVersionOp; private RequestBuiltinPackageVersionOperation _requestBuiltinPackageVersionOp;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSRequestPackageVersionOperation(DefaultBuildinFileSystem fileSystem) internal DBFSRequestPackageVersionOperation(DefaultBuiltinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
@@ -30,28 +30,28 @@ namespace YooAsset
if (_steps == ESteps.RequestPackageVersion) if (_steps == ESteps.RequestPackageVersion)
{ {
if (_requestBuildinPackageVersionOp == null) if (_requestBuiltinPackageVersionOp == null)
{ {
_requestBuildinPackageVersionOp = new RequestBuildinPackageVersionOperation(_fileSystem); _requestBuiltinPackageVersionOp = new RequestBuiltinPackageVersionOperation(_fileSystem);
_requestBuildinPackageVersionOp.StartOperation(); _requestBuiltinPackageVersionOp.StartOperation();
AddChildOperation(_requestBuildinPackageVersionOp); AddChildOperation(_requestBuiltinPackageVersionOp);
} }
_requestBuildinPackageVersionOp.UpdateOperation(); _requestBuiltinPackageVersionOp.UpdateOperation();
if (_requestBuildinPackageVersionOp.IsDone == false) if (_requestBuiltinPackageVersionOp.IsDone == false)
return; return;
if (_requestBuildinPackageVersionOp.Status == EOperationStatus.Succeed) if (_requestBuiltinPackageVersionOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
PackageVersion = _requestBuildinPackageVersionOp.PackageVersion; PackageVersion = _requestBuiltinPackageVersionOp.PackageVersion;
Status = EOperationStatus.Succeed; Status = EOperationStatus.Succeed;
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _requestBuildinPackageVersionOp.Error; Error = _requestBuiltinPackageVersionOp.Error;
} }
} }
} }

View File

@@ -3,7 +3,7 @@ using System.IO;
namespace YooAsset namespace YooAsset
{ {
internal class CopyBuildinFileOperation : AsyncOperationBase internal class CopyBuiltinFileOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -19,7 +19,7 @@ namespace YooAsset
private readonly string _destFilePath; private readonly string _destFilePath;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
public CopyBuildinFileOperation(string sourceFilePath, string destFilePath) public CopyBuiltinFileOperation(string sourceFilePath, string destFilePath)
{ {
_sourceFilePath = sourceFilePath; _sourceFilePath = sourceFilePath;
_destFilePath = destFilePath; _destFilePath = destFilePath;
@@ -61,7 +61,7 @@ namespace YooAsset
} }
catch (Exception ex) catch (Exception ex)
{ {
YooLogger.Warning($"Failed copy buildin file : {ex.Message}"); YooLogger.Warning($"Failed copy builtin file : {ex.Message}");
_steps = ESteps.UnpackFile; _steps = ESteps.UnpackFile;
} }
} }

View File

@@ -3,7 +3,7 @@ using System.IO;
namespace YooAsset namespace YooAsset
{ {
internal sealed class LoadBuildinCatalogFileOperation : AsyncOperationBase internal sealed class LoadBuiltinCatalogFileOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -14,7 +14,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private UnityWebDataRequestOperation _webDataRequestOp; private UnityWebDataRequestOperation _webDataRequestOp;
private byte[] _fileData; private byte[] _fileData;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
@@ -22,9 +22,9 @@ namespace YooAsset
/// <summary> /// <summary>
/// 内置资源目录 /// 内置资源目录
/// </summary> /// </summary>
public DefaultBuildinFileCatalog Catalog; public DefaultBuiltinFileCatalog Catalog;
internal LoadBuildinCatalogFileOperation(DefaultBuildinFileSystem fileSystem) internal LoadBuiltinCatalogFileOperation(DefaultBuiltinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class LoadBuildinPackageManifestOperation : AsyncOperationBase internal class LoadBuiltinPackageManifestOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -14,7 +14,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private readonly string _packageVersion; private readonly string _packageVersion;
private readonly string _packageHash; private readonly string _packageHash;
private UnityWebDataRequestOperation _webDataRequestOp; private UnityWebDataRequestOperation _webDataRequestOp;
@@ -28,7 +28,7 @@ namespace YooAsset
public PackageManifest Manifest { private set; get; } public PackageManifest Manifest { private set; get; }
internal LoadBuildinPackageManifestOperation(DefaultBuildinFileSystem fileSystem, string packageVersion, string packageHash) internal LoadBuiltinPackageManifestOperation(DefaultBuiltinFileSystem fileSystem, string packageVersion, string packageHash)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
_packageVersion = packageVersion; _packageVersion = packageVersion;
@@ -45,7 +45,7 @@ namespace YooAsset
if (_steps == ESteps.TryLoadFileData) if (_steps == ESteps.TryLoadFileData)
{ {
string filePath = _fileSystem.GetBuildinPackageManifestFilePath(_packageVersion); string filePath = _fileSystem.GetBuiltinPackageManifestFilePath(_packageVersion);
if (File.Exists(filePath)) if (File.Exists(filePath))
{ {
_fileData = File.ReadAllBytes(filePath); _fileData = File.ReadAllBytes(filePath);
@@ -61,7 +61,7 @@ namespace YooAsset
{ {
if (_webDataRequestOp == null) if (_webDataRequestOp == null)
{ {
string filePath = _fileSystem.GetBuildinPackageManifestFilePath(_packageVersion); string filePath = _fileSystem.GetBuiltinPackageManifestFilePath(_packageVersion);
string url = DownloadSystemHelper.ConvertToWWWPath(filePath); string url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_webDataRequestOp = new UnityWebDataRequestOperation(url, 60); _webDataRequestOp = new UnityWebDataRequestOperation(url, 60);
_webDataRequestOp.StartOperation(); _webDataRequestOp.StartOperation();
@@ -95,7 +95,7 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = "Failed to verify buildin package manifest file !"; Error = "Failed to verify builtin package manifest file !";
} }
} }

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class RequestBuildinPackageHashOperation : AsyncOperationBase internal class RequestBuiltinPackageHashOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -13,7 +13,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private readonly string _packageVersion; private readonly string _packageVersion;
private UnityWebTextRequestOperation _webTextRequestOp; private UnityWebTextRequestOperation _webTextRequestOp;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
@@ -24,7 +24,7 @@ namespace YooAsset
public string PackageHash { private set; get; } public string PackageHash { private set; get; }
internal RequestBuildinPackageHashOperation(DefaultBuildinFileSystem fileSystem, string packageVersion) internal RequestBuiltinPackageHashOperation(DefaultBuiltinFileSystem fileSystem, string packageVersion)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
_packageVersion = packageVersion; _packageVersion = packageVersion;
@@ -40,7 +40,7 @@ namespace YooAsset
if (_steps == ESteps.TryLoadPackageHash) if (_steps == ESteps.TryLoadPackageHash)
{ {
string filePath = _fileSystem.GetBuildinPackageHashFilePath(_packageVersion); string filePath = _fileSystem.GetBuiltinPackageHashFilePath(_packageVersion);
if (File.Exists(filePath)) if (File.Exists(filePath))
{ {
PackageHash = File.ReadAllText(filePath); PackageHash = File.ReadAllText(filePath);
@@ -56,7 +56,7 @@ namespace YooAsset
{ {
if (_webTextRequestOp == null) if (_webTextRequestOp == null)
{ {
string filePath = _fileSystem.GetBuildinPackageHashFilePath(_packageVersion); string filePath = _fileSystem.GetBuiltinPackageHashFilePath(_packageVersion);
string url = DownloadSystemHelper.ConvertToWWWPath(filePath); string url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_webTextRequestOp = new UnityWebTextRequestOperation(url, 60); _webTextRequestOp = new UnityWebTextRequestOperation(url, 60);
_webTextRequestOp.StartOperation(); _webTextRequestOp.StartOperation();
@@ -86,7 +86,7 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Buildin package hash file content is empty !"; Error = $"Builtin package hash file content is empty !";
} }
else else
{ {

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class RequestBuildinPackageVersionOperation : AsyncOperationBase internal class RequestBuiltinPackageVersionOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -13,7 +13,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuildinFileSystem _fileSystem; private readonly DefaultBuiltinFileSystem _fileSystem;
private UnityWebTextRequestOperation _webTextRequestOp; private UnityWebTextRequestOperation _webTextRequestOp;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
@@ -23,7 +23,7 @@ namespace YooAsset
public string PackageVersion { private set; get; } public string PackageVersion { private set; get; }
internal RequestBuildinPackageVersionOperation(DefaultBuildinFileSystem fileSystem) internal RequestBuiltinPackageVersionOperation(DefaultBuiltinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
@@ -38,7 +38,7 @@ namespace YooAsset
if (_steps == ESteps.TryLoadPackageVersion) if (_steps == ESteps.TryLoadPackageVersion)
{ {
string filePath = _fileSystem.GetBuildinPackageVersionFilePath(); string filePath = _fileSystem.GetBuiltinPackageVersionFilePath();
if (File.Exists(filePath)) if (File.Exists(filePath))
{ {
PackageVersion = File.ReadAllText(filePath); PackageVersion = File.ReadAllText(filePath);
@@ -54,7 +54,7 @@ namespace YooAsset
{ {
if (_webTextRequestOp == null) if (_webTextRequestOp == null)
{ {
string filePath = _fileSystem.GetBuildinPackageVersionFilePath(); string filePath = _fileSystem.GetBuiltinPackageVersionFilePath();
string url = DownloadSystemHelper.ConvertToWWWPath(filePath); string url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_webTextRequestOp = new UnityWebTextRequestOperation(url, 60); _webTextRequestOp = new UnityWebTextRequestOperation(url, 60);
_webTextRequestOp.StartOperation(); _webTextRequestOp.StartOperation();
@@ -84,7 +84,7 @@ namespace YooAsset
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = $"Buildin package version file content is empty !"; Error = $"Builtin package version file content is empty !";
} }
else else
{ {

View File

@@ -57,7 +57,7 @@ namespace YooAsset
#region #region
/// <summary> /// <summary>
/// 自定义参数:远程服务接口 /// 自定义参数:远程服务接口的实例类
/// </summary> /// </summary>
public IRemoteServices RemoteServices { private set; get; } public IRemoteServices RemoteServices { private set; get; }
@@ -112,7 +112,7 @@ namespace YooAsset
public List<long> ResumeDownloadResponseCodes { private set; get; } = null; public List<long> ResumeDownloadResponseCodes { private set; get; } = null;
/// <summary> /// <summary>
/// 自定义参数:解密方法 /// 自定义参数:解密服务接口的实例
/// </summary> /// </summary>
public IDecryptionServices DecryptionServices { private set; get; } public IDecryptionServices DecryptionServices { private set; get; }
@@ -122,7 +122,7 @@ namespace YooAsset
public IManifestRestoreServices ManifestServices { private set; get; } public IManifestRestoreServices ManifestServices { private set; get; }
/// <summary> /// <summary>
/// 自定义参数:拷贝内置文件服务 /// 自定义参数:拷贝内置文件接口的实例
/// </summary> /// </summary>
public ICopyLocalFileServices CopyLocalFileServices { private set; get; } public ICopyLocalFileServices CopyLocalFileServices { private set; get; }
#endregion #endregion

View File

@@ -4,12 +4,12 @@ namespace YooAsset
{ {
internal class DefaultUnpackRemoteServices : IRemoteServices internal class DefaultUnpackRemoteServices : IRemoteServices
{ {
private readonly string _buildinPackageRoot; private readonly string _builtinPackageRoot;
protected readonly Dictionary<string, string> _mapping = new Dictionary<string, string>(10000); protected readonly Dictionary<string, string> _mapping = new Dictionary<string, string>(10000);
public DefaultUnpackRemoteServices(string buildinPackRoot) public DefaultUnpackRemoteServices(string builtinPackRoot)
{ {
_buildinPackageRoot = buildinPackRoot; _builtinPackageRoot = builtinPackRoot;
} }
string IRemoteServices.GetRemoteMainURL(string fileName) string IRemoteServices.GetRemoteMainURL(string fileName)
{ {
@@ -24,7 +24,7 @@ namespace YooAsset
{ {
if (_mapping.TryGetValue(fileName, out string url) == false) if (_mapping.TryGetValue(fileName, out string url) == false)
{ {
string filePath = PathUtility.Combine(_buildinPackageRoot, fileName); string filePath = PathUtility.Combine(_builtinPackageRoot, fileName);
url = DownloadSystemHelper.ConvertToWWWPath(filePath); url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_mapping.Add(fileName, url); _mapping.Add(fileName, url);
} }

View File

@@ -44,12 +44,12 @@ namespace YooAsset
public bool DisableUnityWebCache { private set; get; } = false; public bool DisableUnityWebCache { private set; get; } = false;
/// <summary> /// <summary>
/// 自定义参数:跨域下载服务接口 /// 自定义参数:远程服务接口的实例类(支持跨域下载)
/// </summary> /// </summary>
public IRemoteServices RemoteServices { private set; get; } public IRemoteServices RemoteServices { private set; get; }
/// <summary> /// <summary>
/// 自定义参数:解密方法 /// 自定义参数:解密服务接口的实例
/// </summary> /// </summary>
public IWebDecryptionServices DecryptionServices { private set; get; } public IWebDecryptionServices DecryptionServices { private set; get; }

View File

@@ -58,7 +58,7 @@ namespace YooAsset
public bool DisableUnityWebCache { private set; get; } = false; public bool DisableUnityWebCache { private set; get; } = false;
/// <summary> /// <summary>
/// 自定义参数:解密方法 /// 自定义参数:解密服务接口的实例
/// </summary> /// </summary>
public IWebDecryptionServices DecryptionServices { private set; get; } public IWebDecryptionServices DecryptionServices { private set; get; }
@@ -180,7 +180,7 @@ namespace YooAsset
#region #region
protected string GetDefaultWebPackageRoot(string packageName) protected string GetDefaultWebPackageRoot(string packageName)
{ {
string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot(); string rootDirectory = YooAssetSettingsData.GetYooDefaultBuiltinRoot();
return PathUtility.Combine(rootDirectory, packageName); return PathUtility.Combine(rootDirectory, packageName);
} }
public string GetWebFileLoadPath(PackageBundle bundle) public string GetWebFileLoadPath(PackageBundle bundle)
@@ -209,7 +209,7 @@ namespace YooAsset
} }
public string GetCatalogBinaryFileLoadPath() public string GetCatalogBinaryFileLoadPath()
{ {
return PathUtility.Combine(_webPackageRoot, DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName); return PathUtility.Combine(_webPackageRoot, DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName);
} }
/// <summary> /// <summary>

View File

@@ -77,7 +77,7 @@ namespace YooAsset
_fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper); _fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper);
} }
YooLogger.Log($"Package '{_fileSystem.PackageName}' buildin catalog files count : {catalog.Wrappers.Count}"); YooLogger.Log($"Package '{_fileSystem.PackageName}' builtin catalog files count : {catalog.Wrappers.Count}");
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Succeed; Status = EOperationStatus.Succeed;
} }

View File

@@ -83,9 +83,9 @@ namespace YooAsset
/// </summary> /// </summary>
/// <param name="decryptionServices">加密文件解密服务类</param> /// <param name="decryptionServices">加密文件解密服务类</param>
/// <param name="packageRoot">文件系统的根目录</param> /// <param name="packageRoot">文件系统的根目录</param>
public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, string packageRoot = null) public static FileSystemParameters CreateDefaultBuiltinFileSystemParameters(IDecryptionServices decryptionServices = null, string packageRoot = null)
{ {
string fileSystemClass = typeof(DefaultBuildinFileSystem).FullName; string fileSystemClass = typeof(DefaultBuiltinFileSystem).FullName;
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot); var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices); fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
return fileSystemParams; return fileSystemParams;

View File

@@ -71,7 +71,7 @@ namespace YooAsset
/// </summary> /// </summary>
public class OfflinePlayModeParameters : InitializeParameters public class OfflinePlayModeParameters : InitializeParameters
{ {
public FileSystemParameters BuildinFileSystemParameters; public FileSystemParameters BuiltinFileSystemParameters;
} }
/// <summary> /// <summary>
@@ -79,7 +79,7 @@ namespace YooAsset
/// </summary> /// </summary>
public class HostPlayModeParameters : InitializeParameters public class HostPlayModeParameters : InitializeParameters
{ {
public FileSystemParameters BuildinFileSystemParameters; public FileSystemParameters BuiltinFileSystemParameters;
public FileSystemParameters CacheFileSystemParameters; public FileSystemParameters CacheFileSystemParameters;
} }

View File

@@ -36,6 +36,9 @@ namespace YooAsset
{ {
get get
{ {
if (_watch == null)
return false;
// NOTE : 单次调用开销约1微秒 // NOTE : 单次调用开销约1微秒
return _watch.ElapsedMilliseconds - _frameTime >= MaxTimeSlice; return _watch.ElapsedMilliseconds - _frameTime >= MaxTimeSlice;
} }

View File

@@ -119,86 +119,13 @@ namespace YooAsset
/// </summary> /// </summary>
public static PackageManifest DeserializeFromJson(string jsonContent) public static PackageManifest DeserializeFromJson(string jsonContent)
{ {
return JsonUtility.FromJson<PackageManifest>(jsonContent); var manifest = JsonUtility.FromJson<PackageManifest>(jsonContent);
}
/// <summary> // 初始化资源包
/// 反序列化(二进制文件) for (int i = 0; i < manifest.BundleList.Count; i++)
/// </summary>
public static PackageManifest DeserializeFromBinary(byte[] binaryData, IManifestRestoreServices services)
{ {
// 创建缓存器 var packageBundle = manifest.BundleList[i];
BufferReader buffer; packageBundle.InitBundle(manifest);
if (services != null)
{
var resultBytes = services.RestoreManifest(binaryData);
buffer = new BufferReader(resultBytes);
}
else
{
buffer = new BufferReader(binaryData);
}
// 读取文件标记
uint fileSign = buffer.ReadUInt32();
if (fileSign != ManifestDefine.FileSign)
throw new Exception("Invalid manifest file !");
// 读取文件版本
string fileVersion = buffer.ReadUTF8();
if (fileVersion != ManifestDefine.FileVersion)
throw new Exception($"The manifest file version are not compatible : {fileVersion} != {ManifestDefine.FileVersion}");
PackageManifest manifest = new PackageManifest();
{
// 读取文件头信息
manifest.FileVersion = fileVersion;
manifest.EnableAddressable = buffer.ReadBool();
manifest.SupportExtensionless = buffer.ReadBool();
manifest.LocationToLower = buffer.ReadBool();
manifest.IncludeAssetGUID = buffer.ReadBool();
manifest.OutputNameStyle = buffer.ReadInt32();
manifest.BuildBundleType = buffer.ReadInt32();
manifest.BuildPipeline = buffer.ReadUTF8();
manifest.PackageName = buffer.ReadUTF8();
manifest.PackageVersion = buffer.ReadUTF8();
manifest.PackageNote = buffer.ReadUTF8();
// 检测配置
if (manifest.EnableAddressable && manifest.LocationToLower)
throw new Exception("Addressable not support location to lower !");
// 读取资源列表
int packageAssetCount = buffer.ReadInt32();
CreateAssetCollection(manifest, packageAssetCount);
for (int i = 0; i < packageAssetCount; i++)
{
var packageAsset = new PackageAsset();
packageAsset.Address = buffer.ReadUTF8();
packageAsset.AssetPath = buffer.ReadUTF8();
packageAsset.AssetGUID = buffer.ReadUTF8();
packageAsset.AssetTags = buffer.ReadUTF8Array();
packageAsset.BundleID = buffer.ReadInt32();
packageAsset.DependBundleIDs = buffer.ReadInt32Array();
FillAssetCollection(manifest, packageAsset);
}
// 读取资源包列表
int packageBundleCount = buffer.ReadInt32();
CreateBundleCollection(manifest, packageBundleCount);
for (int i = 0; i < packageBundleCount; i++)
{
var packageBundle = new PackageBundle();
packageBundle.BundleName = buffer.ReadUTF8();
packageBundle.UnityCRC = buffer.ReadUInt32();
packageBundle.FileHash = buffer.ReadUTF8();
packageBundle.FileCRC = buffer.ReadUInt32();
packageBundle.FileSize = buffer.ReadInt64();
packageBundle.Encrypted = buffer.ReadBool();
packageBundle.Tags = buffer.ReadUTF8Array();
packageBundle.DependBundleIDs = buffer.ReadInt32Array();
FillBundleCollection(manifest, packageBundle);
}
} }
// 初始化资源清单 // 初始化资源清单
@@ -206,8 +133,20 @@ namespace YooAsset
return manifest; return manifest;
} }
/// <summary>
/// 反序列化(二进制文件)
/// </summary>
public static PackageManifest DeserializeFromBinary(byte[] binaryData, IManifestRestoreServices services)
{
DeserializeManifestOperation operation = new DeserializeManifestOperation(services, binaryData);
operation.StartOperation();
operation.WaitForAsyncComplete();
return operation.Manifest;
}
#region /// <summary>
/// 初始化资源清单
/// </summary>
public static void InitManifest(PackageManifest manifest) public static void InitManifest(PackageManifest manifest)
{ {
// 填充资源包内包含的主资源列表 // 填充资源包内包含的主资源列表
@@ -237,108 +176,6 @@ namespace YooAsset
} }
} }
public static void CreateAssetCollection(PackageManifest manifest, int assetCount)
{
manifest.AssetList = new List<PackageAsset>(assetCount);
manifest.AssetDic = new Dictionary<string, PackageAsset>(assetCount);
if (manifest.EnableAddressable)
{
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 3);
}
else
{
if (manifest.LocationToLower)
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2, StringComparer.OrdinalIgnoreCase);
else
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2);
}
if (manifest.IncludeAssetGUID)
manifest.AssetPathMapping2 = new Dictionary<string, string>(assetCount);
else
manifest.AssetPathMapping2 = new Dictionary<string, string>();
}
public static void FillAssetCollection(PackageManifest manifest, PackageAsset packageAsset)
{
// 添加到列表集合
manifest.AssetList.Add(packageAsset);
// 注意:我们不允许原始路径存在重名
string assetPath = packageAsset.AssetPath;
if (manifest.AssetDic.ContainsKey(assetPath))
throw new System.Exception($"AssetPath have existed : {assetPath}");
else
manifest.AssetDic.Add(assetPath, packageAsset);
// 填充AssetPathMapping1
{
string location = packageAsset.AssetPath;
// 添加原生路径的映射
if (manifest.AssetPathMapping1.ContainsKey(location))
throw new System.Exception($"Location have existed : {location}");
else
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
// 添加无后缀名路径的映射
if (manifest.SupportExtensionless)
{
string locationWithoutExtension = Path.ChangeExtension(location, null);
if (ReferenceEquals(location, locationWithoutExtension) == false)
{
if (manifest.AssetPathMapping1.ContainsKey(locationWithoutExtension))
YooLogger.Warning($"Location have existed : {locationWithoutExtension}");
else
manifest.AssetPathMapping1.Add(locationWithoutExtension, packageAsset.AssetPath);
}
}
}
// 添加可寻址地址
if (manifest.EnableAddressable)
{
string location = packageAsset.Address;
if (string.IsNullOrEmpty(location) == false)
{
if (manifest.AssetPathMapping1.ContainsKey(location))
throw new System.Exception($"Location have existed : {location}");
else
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
}
}
// 填充AssetPathMapping2
if (manifest.IncludeAssetGUID)
{
if (manifest.AssetPathMapping2.ContainsKey(packageAsset.AssetGUID))
throw new System.Exception($"AssetGUID have existed : {packageAsset.AssetGUID}");
else
manifest.AssetPathMapping2.Add(packageAsset.AssetGUID, packageAsset.AssetPath);
}
}
public static void CreateBundleCollection(PackageManifest manifest, int bundleCount)
{
manifest.BundleList = new List<PackageBundle>(bundleCount);
manifest.BundleDic1 = new Dictionary<string, PackageBundle>(bundleCount);
manifest.BundleDic2 = new Dictionary<string, PackageBundle>(bundleCount);
manifest.BundleDic3 = new Dictionary<string, PackageBundle>(bundleCount);
}
public static void FillBundleCollection(PackageManifest manifest, PackageBundle packageBundle)
{
// 初始化资源包
packageBundle.InitBundle(manifest);
// 添加到列表集合
manifest.BundleList.Add(packageBundle);
manifest.BundleDic1.Add(packageBundle.BundleName, packageBundle);
manifest.BundleDic2.Add(packageBundle.FileName, packageBundle);
manifest.BundleDic3.Add(packageBundle.BundleGUID, packageBundle);
}
#endregion
/// <summary> /// <summary>
/// 获取资源文件的后缀名 /// 获取资源文件的后缀名
/// </summary> /// </summary>

View File

@@ -117,7 +117,7 @@ namespace YooAsset
{ {
_packageAssetCount = _buffer.ReadInt32(); _packageAssetCount = _buffer.ReadInt32();
_progressTotalValue = _packageAssetCount; _progressTotalValue = _packageAssetCount;
ManifestTools.CreateAssetCollection(Manifest, _packageAssetCount); CreateAssetCollection(Manifest, _packageAssetCount);
_steps = ESteps.DeserializeAssetList; _steps = ESteps.DeserializeAssetList;
} }
if (_steps == ESteps.DeserializeAssetList) if (_steps == ESteps.DeserializeAssetList)
@@ -131,7 +131,7 @@ namespace YooAsset
packageAsset.AssetTags = _buffer.ReadUTF8Array(); packageAsset.AssetTags = _buffer.ReadUTF8Array();
packageAsset.BundleID = _buffer.ReadInt32(); packageAsset.BundleID = _buffer.ReadInt32();
packageAsset.DependBundleIDs = _buffer.ReadInt32Array(); packageAsset.DependBundleIDs = _buffer.ReadInt32Array();
ManifestTools.FillAssetCollection(Manifest, packageAsset); FillAssetCollection(Manifest, packageAsset);
_packageAssetCount--; _packageAssetCount--;
Progress = 1f - _packageAssetCount / _progressTotalValue; Progress = 1f - _packageAssetCount / _progressTotalValue;
@@ -149,7 +149,7 @@ namespace YooAsset
{ {
_packageBundleCount = _buffer.ReadInt32(); _packageBundleCount = _buffer.ReadInt32();
_progressTotalValue = _packageBundleCount; _progressTotalValue = _packageBundleCount;
ManifestTools.CreateBundleCollection(Manifest, _packageBundleCount); CreateBundleCollection(Manifest, _packageBundleCount);
_steps = ESteps.DeserializeBundleList; _steps = ESteps.DeserializeBundleList;
} }
if (_steps == ESteps.DeserializeBundleList) if (_steps == ESteps.DeserializeBundleList)
@@ -165,7 +165,7 @@ namespace YooAsset
packageBundle.Encrypted = _buffer.ReadBool(); packageBundle.Encrypted = _buffer.ReadBool();
packageBundle.Tags = _buffer.ReadUTF8Array(); packageBundle.Tags = _buffer.ReadUTF8Array();
packageBundle.DependBundleIDs = _buffer.ReadInt32Array(); packageBundle.DependBundleIDs = _buffer.ReadInt32Array();
ManifestTools.FillBundleCollection(Manifest, packageBundle); FillBundleCollection(Manifest, packageBundle);
_packageBundleCount--; _packageBundleCount--;
Progress = 1f - _packageBundleCount / _progressTotalValue; Progress = 1f - _packageBundleCount / _progressTotalValue;
@@ -194,5 +194,117 @@ namespace YooAsset
Error = e.Message; Error = e.Message;
} }
} }
internal override void InternalWaitForAsyncComplete()
{
while (true)
{
if (ExecuteWhileDone())
{
_steps = ESteps.Done;
break;
}
}
}
private void CreateAssetCollection(PackageManifest manifest, int assetCount)
{
manifest.AssetList = new List<PackageAsset>(assetCount);
manifest.AssetDic = new Dictionary<string, PackageAsset>(assetCount);
if (manifest.EnableAddressable)
{
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 3);
}
else
{
if (manifest.LocationToLower)
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2, StringComparer.OrdinalIgnoreCase);
else
manifest.AssetPathMapping1 = new Dictionary<string, string>(assetCount * 2);
}
if (manifest.IncludeAssetGUID)
manifest.AssetPathMapping2 = new Dictionary<string, string>(assetCount);
else
manifest.AssetPathMapping2 = new Dictionary<string, string>();
}
private void FillAssetCollection(PackageManifest manifest, PackageAsset packageAsset)
{
// 添加到列表集合
manifest.AssetList.Add(packageAsset);
// 注意:我们不允许原始路径存在重名
string assetPath = packageAsset.AssetPath;
if (manifest.AssetDic.ContainsKey(assetPath))
throw new System.Exception($"AssetPath have existed : {assetPath}");
else
manifest.AssetDic.Add(assetPath, packageAsset);
// 填充AssetPathMapping1
{
string location = packageAsset.AssetPath;
// 添加原生路径的映射
if (manifest.AssetPathMapping1.ContainsKey(location))
throw new System.Exception($"Location have existed : {location}");
else
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
// 添加无后缀名路径的映射
if (manifest.SupportExtensionless)
{
string locationWithoutExtension = Path.ChangeExtension(location, null);
if (ReferenceEquals(location, locationWithoutExtension) == false)
{
if (manifest.AssetPathMapping1.ContainsKey(locationWithoutExtension))
YooLogger.Warning($"Location have existed : {locationWithoutExtension}");
else
manifest.AssetPathMapping1.Add(locationWithoutExtension, packageAsset.AssetPath);
}
}
}
// 填充AssetPathMapping2
if (manifest.IncludeAssetGUID)
{
if (manifest.AssetPathMapping2.ContainsKey(packageAsset.AssetGUID))
throw new System.Exception($"AssetGUID have existed : {packageAsset.AssetGUID}");
else
manifest.AssetPathMapping2.Add(packageAsset.AssetGUID, packageAsset.AssetPath);
}
// 添加可寻址地址
if (manifest.EnableAddressable)
{
string location = packageAsset.Address;
if (string.IsNullOrEmpty(location) == false)
{
if (manifest.AssetPathMapping1.ContainsKey(location))
throw new System.Exception($"Location have existed : {location}");
else
manifest.AssetPathMapping1.Add(location, packageAsset.AssetPath);
}
}
}
private void CreateBundleCollection(PackageManifest manifest, int bundleCount)
{
manifest.BundleList = new List<PackageBundle>(bundleCount);
manifest.BundleDic1 = new Dictionary<string, PackageBundle>(bundleCount);
manifest.BundleDic2 = new Dictionary<string, PackageBundle>(bundleCount);
manifest.BundleDic3 = new Dictionary<string, PackageBundle>(bundleCount);
}
private void FillBundleCollection(PackageManifest manifest, PackageBundle packageBundle)
{
// 初始化资源包
packageBundle.InitBundle(manifest);
// 添加到列表集合
manifest.BundleList.Add(packageBundle);
manifest.BundleDic1.Add(packageBundle.BundleName, packageBundle);
manifest.BundleDic2.Add(packageBundle.FileName, packageBundle);
manifest.BundleDic3.Add(packageBundle.BundleGUID, packageBundle);
}
} }
} }

View File

@@ -112,12 +112,12 @@ namespace YooAsset
else if (_playMode == EPlayMode.OfflinePlayMode) else if (_playMode == EPlayMode.OfflinePlayMode)
{ {
var initializeParameters = parameters as OfflinePlayModeParameters; var initializeParameters = parameters as OfflinePlayModeParameters;
initializeOperation = playModeImpl.InitializeAsync(initializeParameters.BuildinFileSystemParameters); initializeOperation = playModeImpl.InitializeAsync(initializeParameters.BuiltinFileSystemParameters);
} }
else if (_playMode == EPlayMode.HostPlayMode) else if (_playMode == EPlayMode.HostPlayMode)
{ {
var initializeParameters = parameters as HostPlayModeParameters; var initializeParameters = parameters as HostPlayModeParameters;
initializeOperation = playModeImpl.InitializeAsync(initializeParameters.BuildinFileSystemParameters, initializeParameters.CacheFileSystemParameters); initializeOperation = playModeImpl.InitializeAsync(initializeParameters.BuiltinFileSystemParameters, initializeParameters.CacheFileSystemParameters);
} }
else if (_playMode == EPlayMode.WebPlayMode) else if (_playMode == EPlayMode.WebPlayMode)
{ {

View File

@@ -191,7 +191,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 获取YOO默认的内置文件根目录 /// 获取YOO默认的内置文件根目录
/// </summary> /// </summary>
internal static string GetYooDefaultBuildinRoot() internal static string GetYooDefaultBuiltinRoot()
{ {
if (string.IsNullOrEmpty(Setting.DefaultYooFolderName)) if (string.IsNullOrEmpty(Setting.DefaultYooFolderName))
return Application.streamingAssetsPath; return Application.streamingAssetsPath;

View File

@@ -106,6 +106,9 @@ public static class ShaderVariantCollector
if (_steps == ESteps.CollectSleeping) if (_steps == ESteps.CollectSleeping)
{ {
if (ShaderUtil.anythingCompiling)
return;
if (_elapsedTime.ElapsedMilliseconds > SleepMilliseconds) if (_elapsedTime.ElapsedMilliseconds > SleepMilliseconds)
{ {
DestroyAllSpheres(); DestroyAllSpheres();

View File

@@ -8,10 +8,20 @@ using TapTapMiniGame;
public static class TaptapFileSystemCreater public static class TaptapFileSystemCreater
{ {
public static FileSystemParameters CreateFileSystemParameters(string packageRoot) public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteServices remoteServices)
{ {
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame"; string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot); var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
return fileSystemParams;
}
public static FileSystemParameters CreateFileSystemParameters(string packageRoot, IRemoteServices remoteServices, IWebDecryptionServices decryptionServices)
{
string fileSystemClass = $"{nameof(TaptapFileSystem)},YooAsset.MiniGame";
var fileSystemParams = new FileSystemParameters(fileSystemClass, packageRoot);
fileSystemParams.AddParameter(FileSystemParametersDefine.REMOTE_SERVICES, remoteServices);
fileSystemParams.AddParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, decryptionServices);
return fileSystemParams; return fileSystemParams;
} }
} }