Compare commits

..

33 Commits

Author SHA1 Message Date
何冠峰
4b6a8ca406 Update CHANGELOG.md 2025-12-04 18:30:51 +08:00
何冠峰
c8e45a6cae Update package.json 2025-12-04 18:30:46 +08:00
何冠峰
1fbc9d26a6 style : 修改注释说明 2025-12-04 18:16:40 +08:00
何冠峰
abb087b02e fix #700 2025-12-03 10:14:55 +08:00
何冠峰
aeaf03011f Merge pull request #694 from fslse/ClearBundleFilesByLocations
ClearBundleFilesByLocations
2025-11-22 09:39:21 +08:00
DESKTOP-FIVME83\Administrator
78d24ad3a6 清理指定地址的文件
(cherry picked from commit 41a1973be8f11c1629b334238546556f54101c35)
2025-11-21 16:29:21 +08:00
何冠峰
aab2c4625e feat #671 2025-11-13 15:54:08 +08:00
何冠峰
079ef75605 feat #682 2025-11-13 11:51:28 +08:00
何冠峰
75881b55f6 fix #683 2025-11-12 18:41:17 +08:00
何冠峰
2020c7d508 Merge pull request #687 from OpenLBE/dev
Localize UI strings to English in editor windows
2025-11-12 09:58:46 +08:00
lark
088d939346 Localize UI strings to English in editor windows
Replaced Chinese UI strings with English equivalents in various editor windows and dialogs, including AssetArtReporter, AssetArtScanner, and AssetBundleBuilder viewers. This improves accessibility for non-Chinese users and standardizes the language across the editor tools.
2025-11-11 14:43:49 +08:00
何冠峰
fa50e91c9f fix #684 2025-11-07 16:37:26 +08:00
何冠峰
2e7b992a4b Merge branch 'dev' of https://github.com/tuyoogame/YooAsset into dev 2025-11-07 16:23:54 +08:00
何冠峰
29fbbd97ff fix #678 2025-11-07 16:23:51 +08:00
何冠峰
abb150e33f Merge pull request #676 from coffeeofnosugar/dev
修复UniTask的扩展包问题
2025-11-04 15:59:20 +08:00
coffee
78e20f434e 修复UniTask的扩展包问题
Unity版本: 2021.3.45f1
yooasset版本:2.3.17
少了一个下划线
2025-11-01 23:24:03 +08:00
何冠峰
304222b788 Update EditorDefine.cs 2025-10-31 17:03:27 +08:00
何冠峰
101236db8a Update CHANGELOG.md 2025-10-30 20:49:54 +08:00
何冠峰
37de007b3f Update package.json 2025-10-30 20:49:51 +08:00
何冠峰
d570ba8d74 fix #661 2025-10-30 18:31:06 +08:00
何冠峰
2a956099ae 移除程序集里冗余引用 2025-10-30 11:25:21 +08:00
何冠峰
74037a5a29 fix #670 2025-10-28 19:16:51 +08:00
何冠峰
861f850a32 Merge branch 'dev' of https://github.com/tuyoogame/YooAsset into dev 2025-10-27 17:42:32 +08:00
何冠峰
8b1b5f988a fix #669 2025-10-27 17:42:29 +08:00
何冠峰
efafd1173f Merge pull request #667 from yueh0607/fix/chinese-input-textfield
Fix Chinese input issue in TextField by enabling isDelayed
2025-10-27 09:50:52 +08:00
yzp
03e49ff1fb Fix Chinese input issue in TextField by enabling isDelayed
Fixed an issue where Chinese IME candidate characters were being incorrectly inserted into TextFields (PackageDesc, GroupDesc, etc.), causing garbled text like "默认包baobabmo'rmom".

The fix sets `isDelayed = true` on all TextFields in AssetBundleCollectorWindow, which defers value change callbacks until the user completes input (by pressing Enter or losing focus), thus avoiding interference from IME candidate characters.

Modified TextFields:
- PackageName
- PackageDesc
- GroupName
- GroupDesc
- GroupTags
- User Data (collector)
- Asset Tags (collector)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-26 00:01:48 +08:00
何冠峰
ea34be1f00 fix #646 2025-10-15 17:27:08 +08:00
何冠峰
831a9981e3 Update SearchCacheFilesOperation.cs 2025-10-14 16:58:06 +08:00
何冠峰
9de4aaa658 Merge pull request #656 from AlanLiu90/dev
优化SearchCacheFilesOperation
2025-10-14 16:43:07 +08:00
Alan Liu
3579a23bd5 优化SearchCacheFilesOperation 2025-10-13 18:55:49 +08:00
何冠峰
c865ddc7f2 feat #650 2025-10-10 10:20:02 +08:00
何冠峰
0bde506aec feat #648 2025-10-09 19:10:26 +08:00
何冠峰
15005b3d30 sample : 程序集宏支持
YOO_MACRO_SUPPORT开启扩展代码
2025-10-09 19:07:03 +08:00
126 changed files with 1118 additions and 497 deletions

View File

@@ -2,6 +2,115 @@
All notable changes to this package will be documented in this file. All notable changes to this package will be documented in this file.
## [2.3.18] - 2025-12-04
### Fixed
- (#676) 修复了UniTask扩展包的编译报错。
- (#684) 修复了资源配置窗口Group列表数量过多的时候添加和删除按钮会变小的问题。
- (#700) [**严重**] 修复了小游戏扩展库的下载器再失败后重试逻辑不起效的问题。
### Added
- (#683) 新增了内置文件系统类初始化参数UNPACK_FILE_SYSTEM_ROOT
```csharp
class FileSystemParametersDefine
{
// 指定解压文件的根目录
public const string UNPACK_FILE_SYSTEM_ROOT = "UNPACK_FILE_SYSTEM_ROOT";
}
```
- (#682) 原生文件构建管线新增构建参数IncludePathInHash
```csharp
class RawFileBuildParameters : BuildParameters
{
/// <summary>
/// 文件哈希值计算包含路径信息
/// </summary>
public bool IncludePathInHash = false;
}
```
- (#671) 新增扩展工具,可以生成空的包裹内置资源目录文件。
```csharp
public class CreateEmptyCatalogWindow : EditorWindow
```
- (#694) 新增资源清理方式ClearBundleFilesByLocations
```csharp
public enum EFileClearMode
{
/// <summary>
/// 清理指定地址的文件
/// 说明需要指定参数可选string, string[], List<string>
/// </summary>
ClearBundleFilesByLocations,
}
```
## [2.3.17] - 2025-10-30
**非常重要**:修复了#627优化导致的资源清单CRC值为空的问题。
该问题会导致下载的损坏文件验证通过。
影响范围v2.3.15版本v2.3.16版本。
**非常重要**(#661) 修复了Package销毁过程中遇到正在加载的AssetBundle会导致无法卸载的问题。
该问题是偶现引擎会提示AssetBundle已经加载无法加载新的文件导致资源对象加载失败
影响范围:所有版本!
### Fixed
- (#645) 修复了着色器变种收集工具,在极端情况下变种收集不完整的问题。
- (#646) 修复了EditorSimulateMode模式下开启模拟下载tag不生效的问题。
- (#667) 修复了所有编辑器窗口针对中文IME的输入问题。
- (#670) 修复了Catalog文件生成过程中白名单未考虑自定义清单前缀名。
### Improvements
- 重构并统一了资源清单的反序列化逻辑。
- (#650) 解决互相依赖的资源包无法卸载的问题。需要开启宏定义YOOASSET_EXPERIMENTAL
- (#655) 优化了初始化的时候缓存文件搜索效率。安卓平台性能提升1倍IOS平台性能提升3倍。
### Added
- (#643) 新增构建参数,可以节省资源清单运行时内存
```csharp
class ScriptableBuildParameters
{
/// <summary>
/// 使用可寻址地址代替资源路径
/// 说明:开启此项可以节省运行时清单占用的内存!
/// </summary>
public bool ReplaceAssetPathWithAddress = false;
}
```
- (#648) 新增初始化参数,可以自动释放引用计数为零的资源包
```csharp
class InitializeParameters
{
/// <summary>
/// 当资源引用计数为零的时候自动释放资源包
/// </summary>
public bool AutoUnloadBundleWhenUnused = false;
}
```
### Changed
- 程序集宏定义代码转移到扩展工程。参考MacroSupport文件夹。
## [2.3.16] - 2025-09-17 ## [2.3.16] - 2025-09-17
### Improvements ### Improvements

View File

@@ -261,14 +261,14 @@ namespace YooAsset.Editor
catch (System.Exception e) catch (System.Exception e)
{ {
_reportCombiner = null; _reportCombiner = null;
_titleLabel.text = "导入报告失败!"; _titleLabel.text = "Failed to import report!";
_descLabel.text = e.Message; _descLabel.text = e.Message;
UnityEngine.Debug.LogError(e.StackTrace); UnityEngine.Debug.LogError(e.StackTrace);
} }
} }
private void FixAllBtn_clicked() private void FixAllBtn_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", "修复全部资源(排除白名单和隐藏元素)", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", "Fix all resources (excluding whitelist and hidden elements)", "Yes", "No"))
{ {
if (_reportCombiner != null) if (_reportCombiner != null)
_reportCombiner.FixAll(); _reportCombiner.FixAll();
@@ -276,7 +276,7 @@ namespace YooAsset.Editor
} }
private void FixSelectBtn_clicked() private void FixSelectBtn_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", "修复勾选资源(包含白名单和隐藏元素)", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", "Fix selected resources (including whitelist and hidden elements)", "Yes", "No"))
{ {
if (_reportCombiner != null) if (_reportCombiner != null)
_reportCombiner.FixSelect(); _reportCombiner.FixSelect();
@@ -302,7 +302,7 @@ namespace YooAsset.Editor
} }
private void ExportFilesBtn_clicked() private void ExportFilesBtn_clicked()
{ {
string selectFolderPath = EditorUtility.OpenFolderPanel("导入所有选中资源", EditorTools.GetProjectPath(), string.Empty); string selectFolderPath = EditorUtility.OpenFolderPanel("Export all selected resources", EditorTools.GetProjectPath(), string.Empty);
if (string.IsNullOrEmpty(selectFolderPath) == false) if (string.IsNullOrEmpty(selectFolderPath) == false)
{ {
if (_reportCombiner != null) if (_reportCombiner != null)

View File

@@ -240,7 +240,7 @@ namespace YooAsset.Editor
} }
private void ScanAllBtn_clicked() private void ScanAllBtn_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", $"开始全面扫描!", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", $"Start full scan!", "Yes", "No"))
{ {
string searchKeyWord = _scannerSearchField.value; string searchKeyWord = _scannerSearchField.value;
AssetArtScannerSettingData.ScanAll(searchKeyWord); AssetArtScannerSettingData.ScanAll(searchKeyWord);
@@ -248,7 +248,7 @@ namespace YooAsset.Editor
} }
else else
{ {
Debug.LogWarning("全面扫描已经取消"); Debug.LogWarning("Full scan has been canceled.");
} }
} }
private void ScanBtn_clicked() private void ScanBtn_clicked()

View File

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

View File

@@ -43,28 +43,28 @@ namespace YooAsset.Editor
EditorPrefs.SetInt(key, (int)fileNameStyle); EditorPrefs.SetInt(key, (int)fileNameStyle);
} }
// EBuiltinFileCopyOption // EBuildinFileCopyOption
public static EBuiltinFileCopyOption GetPackageBuiltinFileCopyOption(string packageName, string buildPipeline) public static EBuildinFileCopyOption GetPackageBuildinFileCopyOption(string packageName, string buildPipeline)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuiltinFileCopyOption)}"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}";
return (EBuiltinFileCopyOption)EditorPrefs.GetInt(key, (int)EBuiltinFileCopyOption.None); return (EBuildinFileCopyOption)EditorPrefs.GetInt(key, (int)EBuildinFileCopyOption.None);
} }
public static void SetPackageBuiltinFileCopyOption(string packageName, string buildPipeline, EBuiltinFileCopyOption builtinFileCopyOption) public static void SetPackageBuildinFileCopyOption(string packageName, string buildPipeline, EBuildinFileCopyOption buildinFileCopyOption)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuiltinFileCopyOption)}"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_{nameof(EBuildinFileCopyOption)}";
EditorPrefs.SetInt(key, (int)builtinFileCopyOption); EditorPrefs.SetInt(key, (int)buildinFileCopyOption);
} }
// BuildFileCopyParams // BuildFileCopyParams
public static string GetPackageBuiltinFileCopyParams(string packageName, string buildPipeline) public static string GetPackageBuildinFileCopyParams(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 SetPackageBuiltinFileCopyParams(string packageName, string buildPipeline, string builtinFileCopyParams) public static void SetPackageBuildinFileCopyParams(string packageName, string buildPipeline, string buildinFileCopyParams)
{ {
string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams"; string key = $"{Application.productName}_{packageName}_{buildPipeline}_BuildFileCopyParams";
EditorPrefs.SetString(key, builtinFileCopyParams); EditorPrefs.SetString(key, buildinFileCopyParams);
} }
// 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.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = 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.BuiltinFileCopyOption = EBuiltinFileCopyOption.None; buildParameters.BuildinFileCopyOption = EBuildinFileCopyOption.None;
buildParameters.BuiltinFileCopyParams = string.Empty; buildParameters.BuildinFileCopyParams = 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 BuiltinFileRoot; public string BuildinFileRoot;
/// <summary> /// <summary>
/// 构建管线名称 /// 构建管线名称
@@ -86,12 +86,12 @@ namespace YooAsset.Editor
/// <summary> /// <summary>
/// 内置文件的拷贝选项 /// 内置文件的拷贝选项
/// </summary> /// </summary>
public EBuiltinFileCopyOption BuiltinFileCopyOption = EBuiltinFileCopyOption.None; public EBuildinFileCopyOption BuildinFileCopyOption = EBuildinFileCopyOption.None;
/// <summary> /// <summary>
/// 内置文件的拷贝参数 /// 内置文件的拷贝参数
/// </summary> /// </summary>
public string BuiltinFileCopyParams; public string BuildinFileCopyParams;
/// <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 _builtinRootDirectory = string.Empty; private string _buildinRootDirectory = 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(BuiltinFileRoot)) if (string.IsNullOrEmpty(BuildinFileRoot))
{ {
string message = BuildLogger.GetErrorMessage(ErrorCode.BuiltinFileRootIsNullOrEmpty, "Builtin file root is null or empty !"); string message = BuildLogger.GetErrorMessage(ErrorCode.BuildinFileRootIsNullOrEmpty, "Buildin 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 GetBuiltinRootDirectory() public virtual string GetBuildinRootDirectory()
{ {
if (string.IsNullOrEmpty(_builtinRootDirectory)) if (string.IsNullOrEmpty(_buildinRootDirectory))
{ {
_builtinRootDirectory = $"{BuiltinFileRoot}/{PackageName}"; _buildinRootDirectory = $"{BuildinFileRoot}/{PackageName}";
} }
return _builtinRootDirectory; return _buildinRootDirectory;
} }
} }
} }

View File

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

View File

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

View File

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

View File

@@ -44,9 +44,9 @@ namespace YooAsset.Editor
{ {
bundleInfo.PackageUnityHash = GetUnityHash(bundleInfo, context); bundleInfo.PackageUnityHash = GetUnityHash(bundleInfo, context);
bundleInfo.PackageUnityCRC = GetUnityCRC(bundleInfo, context); bundleInfo.PackageUnityCRC = GetUnityCRC(bundleInfo, context);
bundleInfo.PackageFileHash = GetBundleFileHash(bundleInfo, buildParametersContext); bundleInfo.PackageFileHash = GetBundleFileHash(bundleInfo, context);
bundleInfo.PackageFileCRC = GetBundleFileCRC(bundleInfo, buildParametersContext); bundleInfo.PackageFileCRC = GetBundleFileCRC(bundleInfo, context);
bundleInfo.PackageFileSize = GetBundleFileSize(bundleInfo, buildParametersContext); bundleInfo.PackageFileSize = GetBundleFileSize(bundleInfo, context);
} }
// 4.更新补丁包输出的文件路径 // 4.更新补丁包输出的文件路径
@@ -62,8 +62,8 @@ namespace YooAsset.Editor
protected abstract string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context); protected abstract string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context);
protected abstract uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context); protected abstract uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context);
protected abstract string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); protected abstract string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildContext context);
protected abstract uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); protected abstract uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildContext context);
protected abstract long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext); protected abstract long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildContext context);
} }
} }

View File

@@ -6,15 +6,15 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuiltinFiles_BBP : TaskCopyBuiltinFiles, IBuildTask public class TaskCopyBuildinFiles_BBP : TaskCopyBuildinFiles, 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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuildinFilesToStreaming(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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -40,17 +40,17 @@ namespace YooAsset.Editor
throw new Exception(message); throw new Exception(message);
} }
} }
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileMD5(filePath); return HashUtility.FileMD5(filePath);
} }
protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileCRC32Value(filePath); return HashUtility.FileCRC32Value(filePath);
} }
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return FileUtility.GetFileSize(filePath); return FileUtility.GetFileSize(filePath);

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 TaskCopyBuiltinFiles_BBP(), new TaskCopyBuildinFiles_BBP(),
new TaskCreateCatalog_BBP() new TaskCreateCatalog_BBP()
}; };
return pipeline; return pipeline;

View File

@@ -7,7 +7,7 @@ namespace YooAsset.Editor
{ {
void IBuildTask.Run(BuildContext context) void IBuildTask.Run(BuildContext context)
{ {
CreateManifestFile(false, false, false, context); CreateManifestFile(false, true, false, context);
} }
protected override string[] GetBundleDepends(BuildContext context, string bundleName) protected override string[] GetBundleDepends(BuildContext context, string bundleName)

View File

@@ -19,16 +19,16 @@ namespace YooAsset.Editor
{ {
return 0; return 0;
} }
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return GetFilePathTempHash(filePath); return GetFilePathTempHash(filePath);
} }
protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildContext context)
{ {
return 0; return 0;
} }
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildContext context)
{ {
return GetBundleTempSize(bundleInfo); return GetBundleTempSize(bundleInfo);
} }

View File

@@ -6,16 +6,16 @@ using UnityEngine;
namespace YooAsset.Editor namespace YooAsset.Editor
{ {
public class TaskCopyBuiltinFiles_RFBP : TaskCopyBuiltinFiles, IBuildTask public class TaskCopyBuildinFiles_RFBP : TaskCopyBuildinFiles, 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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuildinFilesToStreaming(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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -14,28 +14,56 @@ namespace YooAsset.Editor
} }
protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context) protected override string GetUnityHash(BuildBundleInfo bundleInfo, BuildContext context)
{
var buildParametersContext = context.GetContextObject<BuildParametersContext>();
var rawFileBuildParameters = buildParametersContext.Parameters as RawFileBuildParameters;
if (rawFileBuildParameters.IncludePathInHash)
{
string filePath = bundleInfo.PackageSourceFilePath;
return GetFileMD5IncludePath(filePath);
}
else
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileMD5(filePath); return HashUtility.FileMD5(filePath);
} }
}
protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context) protected override uint GetUnityCRC(BuildBundleInfo bundleInfo, BuildContext context)
{ {
return 0; return 0;
} }
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildContext context)
{
var buildParametersContext = context.GetContextObject<BuildParametersContext>();
var rawFileBuildParameters = buildParametersContext.Parameters as RawFileBuildParameters;
if (rawFileBuildParameters.IncludePathInHash)
{
string filePath = bundleInfo.PackageSourceFilePath;
return GetFileMD5IncludePath(filePath);
}
else
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileMD5(filePath); return HashUtility.FileMD5(filePath);
} }
protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) }
protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileCRC32Value(filePath); return HashUtility.FileCRC32Value(filePath);
} }
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return FileUtility.GetFileSize(filePath); return FileUtility.GetFileSize(filePath);
} }
private string GetFileMD5IncludePath(string filePath)
{
string pathHash = HashUtility.StringMD5(filePath.ToLowerInvariant());
string contentHash = HashUtility.FileMD5(filePath);
string combined = pathHash + contentHash;
return HashUtility.StringMD5(combined);
}
} }
} }

View File

@@ -6,5 +6,9 @@ namespace YooAsset.Editor
{ {
public class RawFileBuildParameters : BuildParameters public class RawFileBuildParameters : BuildParameters
{ {
/// <summary>
/// 文件哈希值计算包含路径信息
/// </summary>
public bool IncludePathInHash = false;
} }
} }

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 TaskCopyBuiltinFiles_RFBP(), new TaskCopyBuildinFiles_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 TaskCopyBuiltinFiles_SBP : TaskCopyBuiltinFiles, IBuildTask public class TaskCopyBuildinFiles_SBP : TaskCopyBuildinFiles, 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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CopyBuiltinFilesToStreaming(buildParametersContext, manifestContext.Manifest); CopyBuildinFilesToStreaming(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.BuiltinFileCopyOption != EBuiltinFileCopyOption.None) if (buildParametersContext.Parameters.BuildinFileCopyOption != EBuildinFileCopyOption.None)
{ {
CreateCatalogFile(buildParametersContext); CreateCatalogFile(buildParametersContext);
} }

View File

@@ -40,17 +40,17 @@ namespace YooAsset.Editor
throw new Exception(message); throw new Exception(message);
} }
} }
protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override string GetBundleFileHash(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileMD5(filePath); return HashUtility.FileMD5(filePath);
} }
protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override uint GetBundleFileCRC(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return HashUtility.FileCRC32Value(filePath); return HashUtility.FileCRC32Value(filePath);
} }
protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildParametersContext buildParametersContext) protected override long GetBundleFileSize(BuildBundleInfo bundleInfo, BuildContext context)
{ {
string filePath = bundleInfo.PackageSourceFilePath; string filePath = bundleInfo.PackageSourceFilePath;
return FileUtility.GetFileSize(filePath); return FileUtility.GetFileSize(filePath);

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 TaskCopyBuiltinFiles_SBP(), new TaskCopyBuildinFiles_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,
BuiltinFileRootIsNullOrEmpty = 114, BuildinFileRootIsNullOrEmpty = 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 EBuiltinFileCopyOption public enum EBuildinFileCopyOption
{ {
/// <summary> /// <summary>
/// 不拷贝任何文件 /// 不拷贝任何文件

View File

@@ -127,35 +127,35 @@ namespace YooAsset.Editor
}); });
UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth); UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth);
} }
protected void SetCopyBuiltinFileOptionField(EnumField enumField, TextField tagField) protected void SetCopyBuildinFileOptionField(EnumField enumField, TextField tagField)
{ {
// 首包文件拷贝选项 // 首包文件拷贝选项
var builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
enumField.Init(builtinFileCopyOption); enumField.Init(buildinFileCopyOption);
enumField.SetValueWithoutNotify(builtinFileCopyOption); enumField.SetValueWithoutNotify(buildinFileCopyOption);
enumField.style.width = StyleWidth; enumField.style.width = StyleWidth;
enumField.RegisterValueChangedCallback(evt => enumField.RegisterValueChangedCallback(evt =>
{ {
AssetBundleBuilderSetting.SetPackageBuiltinFileCopyOption(PackageName, PipelineName, (EBuiltinFileCopyOption)enumField.value); AssetBundleBuilderSetting.SetPackageBuildinFileCopyOption(PackageName, PipelineName, (EBuildinFileCopyOption)enumField.value);
// 设置内置资源标签显隐 // 设置内置资源标签显隐
SetCopyBuiltinFileTagsVisible(tagField); SetCopyBuildinFileTagsVisible(tagField);
}); });
UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth); UIElementsTools.SetElementLabelMinWidth(enumField, LabelMinWidth);
} }
protected void SetCopyBuiltinFileTagsVisible(TextField tagField) protected void SetCopyBuildinFileTagsVisible(TextField tagField)
{ {
var option = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var option = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
tagField.visible = option == EBuiltinFileCopyOption.ClearAndCopyByTags || option == EBuiltinFileCopyOption.OnlyCopyByTags; tagField.visible = option == EBuildinFileCopyOption.ClearAndCopyByTags || option == EBuildinFileCopyOption.OnlyCopyByTags;
} }
protected void SetCopyBuiltinFileTagsField(TextField textField) protected void SetCopyBuildinFileTagsField(TextField textField)
{ {
// 首包文件拷贝参数 // 首包文件拷贝参数
var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName);
textField.SetValueWithoutNotify(builtinFileCopyParams); textField.SetValueWithoutNotify(buildinFileCopyParams);
textField.RegisterValueChangedCallback(evt => textField.RegisterValueChangedCallback(evt =>
{ {
AssetBundleBuilderSetting.SetPackageBuiltinFileCopyParams(PackageName, PipelineName, textField.value); AssetBundleBuilderSetting.SetPackageBuildinFileCopyParams(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 _copyBuiltinFileOptionField; protected EnumField _copyBuildinFileOptionField;
protected TextField _copyBuiltinFileTagsField; protected TextField _copyBuildinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -60,13 +60,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam"); _copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam");
SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsField(_copyBuildinFileTagsField);
SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption"); _copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption");
SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField); SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -82,14 +82,14 @@ namespace YooAsset.Editor
} }
private void BuildButton_clicked() private void BuildButton_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", $"开始构建资源包[{PackageName}]", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", $"Start building resource package [{PackageName}]!", "Yes", "No"))
{ {
EditorTools.ClearUnityConsole(); EditorTools.ClearUnityConsole();
EditorApplication.delayCall += ExecuteBuild; EditorApplication.delayCall += ExecuteBuild;
} }
else else
{ {
Debug.LogWarning("[Build] 打包已经取消"); Debug.LogWarning("[Build] Packaging has been canceled.");
} }
} }
@@ -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 builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(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.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = 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.BuiltinFileCopyOption = builtinFileCopyOption; buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
buildParameters.BuiltinFileCopyParams = builtinFileCopyParams; buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
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 Builtin File Option" value="Center" name="CopyBuiltinFileOption" /> <uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" />
<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

@@ -42,14 +42,14 @@ namespace YooAsset.Editor
} }
private void BuildButton_clicked() private void BuildButton_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", $"开始构建资源包[{PackageName}]", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", $"Start building resource package [{PackageName}]!", "Yes", "No"))
{ {
EditorTools.ClearUnityConsole(); EditorTools.ClearUnityConsole();
EditorApplication.delayCall += ExecuteBuild; EditorApplication.delayCall += ExecuteBuild;
} }
else else
{ {
Debug.LogWarning("[Build] 打包已经取消"); Debug.LogWarning("[Build] Packaging has been canceled.");
} }
} }
@@ -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 builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(PackageName, PipelineName);
EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters(); EditorSimulateBuildParameters buildParameters = new EditorSimulateBuildParameters();
buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot(); buildParameters.BuildOutputRoot = AssetBundleBuilderHelper.GetDefaultBuildOutputRoot();
buildParameters.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = 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.BuiltinFileCopyOption = builtinFileCopyOption; buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
buildParameters.BuiltinFileCopyParams = builtinFileCopyParams; buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
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 _copyBuiltinFileOptionField; protected EnumField _copyBuildinFileOptionField;
protected TextField _copyBuiltinFileTagsField; protected TextField _copyBuildinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -55,13 +55,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam"); _copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam");
SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsField(_copyBuildinFileTagsField);
SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption"); _copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption");
SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField); SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -77,14 +77,14 @@ namespace YooAsset.Editor
} }
private void BuildButton_clicked() private void BuildButton_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", $"开始构建资源包[{PackageName}]", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", $"Start building resource package [{PackageName}]!", "Yes", "No"))
{ {
EditorTools.ClearUnityConsole(); EditorTools.ClearUnityConsole();
EditorApplication.delayCall += ExecuteBuild; EditorApplication.delayCall += ExecuteBuild;
} }
else else
{ {
Debug.LogWarning("[Build] 打包已经取消"); Debug.LogWarning("[Build] Packaging has been canceled.");
} }
} }
@@ -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 builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(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.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = 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.BuiltinFileCopyOption = builtinFileCopyOption; buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
buildParameters.BuiltinFileCopyParams = builtinFileCopyParams; buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
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 Builtin File Option" value="Center" name="CopyBuiltinFileOption" /> <uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" />
<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 _copyBuiltinFileOptionField; protected EnumField _copyBuildinFileOptionField;
protected TextField _copyBuiltinFileTagsField; protected TextField _copyBuildinFileTagsField;
protected Toggle _clearBuildCacheToggle; protected Toggle _clearBuildCacheToggle;
protected Toggle _useAssetDependencyDBToggle; protected Toggle _useAssetDependencyDBToggle;
@@ -60,13 +60,13 @@ namespace YooAsset.Editor
SetOutputNameStyleField(_outputNameStyleField); SetOutputNameStyleField(_outputNameStyleField);
// 首包文件拷贝参数 // 首包文件拷贝参数
_copyBuiltinFileTagsField = Root.Q<TextField>("CopyBuiltinFileParam"); _copyBuildinFileTagsField = Root.Q<TextField>("CopyBuildinFileParam");
SetCopyBuiltinFileTagsField(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsField(_copyBuildinFileTagsField);
SetCopyBuiltinFileTagsVisible(_copyBuiltinFileTagsField); SetCopyBuildinFileTagsVisible(_copyBuildinFileTagsField);
// 首包文件拷贝选项 // 首包文件拷贝选项
_copyBuiltinFileOptionField = Root.Q<EnumField>("CopyBuiltinFileOption"); _copyBuildinFileOptionField = Root.Q<EnumField>("CopyBuildinFileOption");
SetCopyBuiltinFileOptionField(_copyBuiltinFileOptionField, _copyBuiltinFileTagsField); SetCopyBuildinFileOptionField(_copyBuildinFileOptionField, _copyBuildinFileTagsField);
// 清理构建缓存 // 清理构建缓存
_clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache"); _clearBuildCacheToggle = Root.Q<Toggle>("ClearBuildCache");
@@ -82,14 +82,14 @@ namespace YooAsset.Editor
} }
private void BuildButton_clicked() private void BuildButton_clicked()
{ {
if (EditorUtility.DisplayDialog("提示", $"开始构建资源包[{PackageName}]", "Yes", "No")) if (EditorUtility.DisplayDialog("Info", $"Start building resource package [{PackageName}]!", "Yes", "No"))
{ {
EditorTools.ClearUnityConsole(); EditorTools.ClearUnityConsole();
EditorApplication.delayCall += ExecuteBuild; EditorApplication.delayCall += ExecuteBuild;
} }
else else
{ {
Debug.LogWarning("[Build] 打包已经取消"); Debug.LogWarning("[Build] Packaging has been canceled.");
} }
} }
@@ -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 builtinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyOption(PackageName, PipelineName); var buildinFileCopyOption = AssetBundleBuilderSetting.GetPackageBuildinFileCopyOption(PackageName, PipelineName);
var builtinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuiltinFileCopyParams(PackageName, PipelineName); var buildinFileCopyParams = AssetBundleBuilderSetting.GetPackageBuildinFileCopyParams(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.BuiltinFileRoot = AssetBundleBuilderHelper.GetStreamingAssetsRoot(); buildParameters.BuildinFileRoot = 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.BuiltinFileCopyOption = builtinFileCopyOption; buildParameters.BuildinFileCopyOption = buildinFileCopyOption;
buildParameters.BuiltinFileCopyParams = builtinFileCopyParams; buildParameters.BuildinFileCopyParams = buildinFileCopyParams;
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 Builtin File Option" value="Center" name="CopyBuiltinFileOption" /> <uie:EnumField label="Copy Buildin File Option" value="Center" name="CopyBuildinFileOption" />
<ui:TextField picking-mode="Ignore" label="Copy Builtin File Param" name="CopyBuiltinFileParam" /> <ui:TextField picking-mode="Ignore" label="Copy Buildin File Param" name="CopyBuildinFileParam" />
<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

@@ -236,6 +236,7 @@ namespace YooAsset.Editor
// 包裹名称 // 包裹名称
_packageNameTxt = root.Q<TextField>("PackageName"); _packageNameTxt = root.Q<TextField>("PackageName");
_packageNameTxt.isDelayed = true;
_packageNameTxt.RegisterValueChangedCallback(evt => _packageNameTxt.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
@@ -249,6 +250,7 @@ namespace YooAsset.Editor
// 包裹备注 // 包裹备注
_packageDescTxt = root.Q<TextField>("PackageDesc"); _packageDescTxt = root.Q<TextField>("PackageDesc");
_packageDescTxt.isDelayed = true;
_packageDescTxt.RegisterValueChangedCallback(evt => _packageDescTxt.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
@@ -286,6 +288,7 @@ namespace YooAsset.Editor
// 分组名称 // 分组名称
_groupNameTxt = root.Q<TextField>("GroupName"); _groupNameTxt = root.Q<TextField>("GroupName");
_groupNameTxt.isDelayed = true;
_groupNameTxt.RegisterValueChangedCallback(evt => _groupNameTxt.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
@@ -300,6 +303,7 @@ namespace YooAsset.Editor
// 分组备注 // 分组备注
_groupDescTxt = root.Q<TextField>("GroupDesc"); _groupDescTxt = root.Q<TextField>("GroupDesc");
_groupDescTxt.isDelayed = true;
_groupDescTxt.RegisterValueChangedCallback(evt => _groupDescTxt.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
@@ -314,6 +318,7 @@ namespace YooAsset.Editor
// 分组的资源标签 // 分组的资源标签
_groupTagsTxt = root.Q<TextField>("GroupTags"); _groupTagsTxt = root.Q<TextField>("GroupTags");
_groupTagsTxt.isDelayed = true;
_groupTagsTxt.RegisterValueChangedCallback(evt => _groupTagsTxt.RegisterValueChangedCallback(evt =>
{ {
var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage; var selectPackage = _packageListView.selectedItem as AssetBundleCollectorPackage;
@@ -817,6 +822,7 @@ namespace YooAsset.Editor
var textField = new TextField(); var textField = new TextField();
textField.name = "TextField0"; textField.name = "TextField0";
textField.label = "User Data"; textField.label = "User Data";
textField.isDelayed = true;
textField.style.width = 200; textField.style.width = 200;
elementBottom.Add(textField); elementBottom.Add(textField);
var label = textField.Q<Label>(); var label = textField.Q<Label>();
@@ -826,6 +832,7 @@ namespace YooAsset.Editor
var textField = new TextField(); var textField = new TextField();
textField.name = "TextField1"; textField.name = "TextField1";
textField.label = "Asset Tags"; textField.label = "Asset Tags";
textField.isDelayed = true;
textField.style.width = 100; textField.style.width = 100;
textField.style.marginLeft = 20; textField.style.marginLeft = 20;
textField.style.flexGrow = 1; textField.style.flexGrow = 1;

View File

@@ -30,7 +30,7 @@
<ui:VisualElement name="PackageContainer" style="width: 200px; flex-grow: 0; background-color: rgb(67, 67, 67); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;"> <ui:VisualElement name="PackageContainer" style="width: 200px; flex-grow: 0; background-color: rgb(67, 67, 67); border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px;">
<ui:Label text="Packages" display-tooltip-when-elided="true" name="PackageTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" /> <ui:Label text="Packages" display-tooltip-when-elided="true" name="PackageTitle" style="background-color: rgb(89, 89, 89); -unity-text-align: upper-center; -unity-font-style: bold; border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; border-bottom-width: 5px; font-size: 12px;" />
<ui:ListView focusable="true" name="PackageListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" /> <ui:ListView focusable="true" name="PackageListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" />
<ui:VisualElement name="PackageAddContainer" style="height: 20px; flex-direction: row; justify-content: center;"> <ui:VisualElement name="PackageAddContainer" style="height: 20px; flex-direction: row; justify-content: center; flex-shrink: 0;">
<ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" /> <ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" />
<ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" /> <ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" />
</ui:VisualElement> </ui:VisualElement>
@@ -40,7 +40,7 @@
<ui:TextField picking-mode="Ignore" label="Package Name" name="PackageName" style="flex-direction: column;" /> <ui:TextField picking-mode="Ignore" label="Package Name" name="PackageName" style="flex-direction: column;" />
<ui:TextField picking-mode="Ignore" label="Package Desc" name="PackageDesc" style="flex-direction: column;" /> <ui:TextField picking-mode="Ignore" label="Package Desc" name="PackageDesc" style="flex-direction: column;" />
<ui:ListView focusable="true" name="GroupListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" /> <ui:ListView focusable="true" name="GroupListView" item-height="20" virtualization-method="DynamicHeight" reorderable="true" reorder-mode="Animated" style="flex-grow: 1;" />
<ui:VisualElement name="GroupAddContainer" style="height: 20px; flex-direction: row; justify-content: center;"> <ui:VisualElement name="GroupAddContainer" style="height: 20px; flex-direction: row; justify-content: center; flex-shrink: 0;">
<ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" /> <ui:Button text=" - " display-tooltip-when-elided="true" name="RemoveBtn" />
<ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" /> <ui:Button text=" + " display-tooltip-when-elided="true" name="AddBtn" />
</ui:VisualElement> </ui:VisualElement>

View File

@@ -88,8 +88,8 @@ namespace YooAsset.Editor
} }
catch (Exception ex) catch (Exception ex)
{ {
ClearDatabase(true);
Debug.LogError($"Failed to load cache database : {ex.Message}"); Debug.LogError($"Failed to load cache database : {ex.Message}");
ClearDatabase(true);
} }
finally finally
{ {
@@ -169,6 +169,7 @@ namespace YooAsset.Editor
File.Delete(_databaseFilePath); File.Delete(_databaseFilePath);
} }
if (_database != null)
_database.Clear(); _database.Clear();
} }

View File

@@ -41,6 +41,8 @@ namespace YooAsset.Editor
Texture, Texture,
RenderTexture, RenderTexture,
VideoClip, VideoClip,
PlayableAsset,
TimelineAsset
} }
/// <summary> /// <summary>

View File

@@ -53,24 +53,29 @@ namespace YooAsset
} }
// 创建内置清单实例 // 创建内置清单实例
var builtinFileCatalog = new DefaultBuiltinFileCatalog(); var buildinFileCatalog = new DefaultBuildinFileCatalog();
builtinFileCatalog.FileVersion = CatalogDefine.FileVersion; buildinFileCatalog.FileVersion = CatalogDefine.FileVersion;
builtinFileCatalog.PackageName = packageName; buildinFileCatalog.PackageName = packageName;
builtinFileCatalog.PackageVersion = packageVersion; buildinFileCatalog.PackageVersion = packageVersion;
// 创建白名单查询集合 // 创建白名单查询集合
HashSet<string> whiteFileList = new HashSet<string> HashSet<string> whiteFileList = new HashSet<string>
{ {
"link.xml", "link.xml",
"buildlogtep.json", "buildlogtep.json",
$"{packageName}.version", DefaultBuildinFileSystemDefine.BuildinCatalogJsonFileName,
$"{packageName}_{packageVersion}.bytes", DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName
$"{packageName}_{packageVersion}.hash",
$"{packageName}_{packageVersion}.json",
$"{packageName}_{packageVersion}.report",
DefaultBuiltinFileSystemDefine.BuiltinCatalogJsonFileName,
DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName
}; };
string packageVersionFileName = YooAssetSettingsData.GetPackageVersionFileName(packageName);
string packageHashFileName = YooAssetSettingsData.GetPackageHashFileName(packageName, packageVersion);
string manifestBinaryFIleName = YooAssetSettingsData.GetManifestBinaryFileName(packageName, packageVersion);
string manifestJsonFIleName = YooAssetSettingsData.GetManifestJsonFileName(packageName, packageVersion);
string reportFileName = YooAssetSettingsData.GetBuildReportFileName(packageName, packageVersion);
whiteFileList.Add(packageVersionFileName);
whiteFileList.Add(packageHashFileName);
whiteFileList.Add(manifestBinaryFIleName);
whiteFileList.Add(manifestJsonFIleName);
whiteFileList.Add(reportFileName);
// 记录所有内置资源文件 // 记录所有内置资源文件
DirectoryInfo rootDirectory = new DirectoryInfo(packageDirectory); DirectoryInfo rootDirectory = new DirectoryInfo(packageDirectory);
@@ -86,10 +91,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 DefaultBuiltinFileCatalog.FileWrapper(); var wrapper = new DefaultBuildinFileCatalog.FileWrapper();
wrapper.BundleGUID = bundleGUID; wrapper.BundleGUID = bundleGUID;
wrapper.FileName = fileName; wrapper.FileName = fileName;
builtinFileCatalog.Wrappers.Add(wrapper); buildinFileCatalog.Wrappers.Add(wrapper);
} }
else else
{ {
@@ -98,16 +103,44 @@ namespace YooAsset
} }
// 创建输出文件 // 创建输出文件
string jsonFilePath = $"{packageDirectory}/{DefaultBuiltinFileSystemDefine.BuiltinCatalogJsonFileName}"; string jsonFilePath = $"{packageDirectory}/{DefaultBuildinFileSystemDefine.BuildinCatalogJsonFileName}";
if (File.Exists(jsonFilePath)) if (File.Exists(jsonFilePath))
File.Delete(jsonFilePath); File.Delete(jsonFilePath);
SerializeToJson(jsonFilePath, builtinFileCatalog); SerializeToJson(jsonFilePath, buildinFileCatalog);
// 创建输出文件 // 创建输出文件
string binaryFilePath = $"{packageDirectory}/{DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName}"; string binaryFilePath = $"{packageDirectory}/{DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName}";
if (File.Exists(binaryFilePath)) if (File.Exists(binaryFilePath))
File.Delete(binaryFilePath); File.Delete(binaryFilePath);
SerializeToBinary(binaryFilePath, builtinFileCatalog); SerializeToBinary(binaryFilePath, buildinFileCatalog);
UnityEditor.AssetDatabase.Refresh();
Debug.Log($"Succeed to save catalog file : {binaryFilePath}");
return true;
}
/// <summary>
/// 生成空的包裹内置资源目录文件
/// </summary>
public static bool CreateEmptyCatalogFile(string packageName, string packageVersion, string outputPath)
{
// 创建内置清单实例
var buildinFileCatalog = new DefaultBuildinFileCatalog();
buildinFileCatalog.FileVersion = CatalogDefine.FileVersion;
buildinFileCatalog.PackageName = packageName;
buildinFileCatalog.PackageVersion = packageVersion;
// 创建输出文件
string jsonFilePath = $"{outputPath}/{DefaultBuildinFileSystemDefine.BuildinCatalogJsonFileName}";
if (File.Exists(jsonFilePath))
File.Delete(jsonFilePath);
SerializeToJson(jsonFilePath, buildinFileCatalog);
// 创建输出文件
string binaryFilePath = $"{outputPath}/{DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName}";
if (File.Exists(binaryFilePath))
File.Delete(binaryFilePath);
SerializeToBinary(binaryFilePath, buildinFileCatalog);
UnityEditor.AssetDatabase.Refresh(); UnityEditor.AssetDatabase.Refresh();
Debug.Log($"Succeed to save catalog file : {binaryFilePath}"); Debug.Log($"Succeed to save catalog file : {binaryFilePath}");
@@ -118,7 +151,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 序列化JSON文件 /// 序列化JSON文件
/// </summary> /// </summary>
public static void SerializeToJson(string savePath, DefaultBuiltinFileCatalog catalog) public static void SerializeToJson(string savePath, DefaultBuildinFileCatalog catalog)
{ {
string json = JsonUtility.ToJson(catalog, true); string json = JsonUtility.ToJson(catalog, true);
FileUtility.WriteAllText(savePath, json); FileUtility.WriteAllText(savePath, json);
@@ -127,15 +160,15 @@ namespace YooAsset
/// <summary> /// <summary>
/// 反序列化JSON文件 /// 反序列化JSON文件
/// </summary> /// </summary>
public static DefaultBuiltinFileCatalog DeserializeFromJson(string jsonContent) public static DefaultBuildinFileCatalog DeserializeFromJson(string jsonContent)
{ {
return JsonUtility.FromJson<DefaultBuiltinFileCatalog>(jsonContent); return JsonUtility.FromJson<DefaultBuildinFileCatalog>(jsonContent);
} }
/// <summary> /// <summary>
/// 序列化(二进制文件) /// 序列化(二进制文件)
/// </summary> /// </summary>
public static void SerializeToBinary(string savePath, DefaultBuiltinFileCatalog catalog) public static void SerializeToBinary(string savePath, DefaultBuildinFileCatalog catalog)
{ {
using (FileStream fs = new FileStream(savePath, FileMode.Create)) using (FileStream fs = new FileStream(savePath, FileMode.Create))
{ {
@@ -170,7 +203,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 反序列化(二进制文件) /// 反序列化(二进制文件)
/// </summary> /// </summary>
public static DefaultBuiltinFileCatalog DeserializeFromBinary(byte[] binaryData) public static DefaultBuildinFileCatalog DeserializeFromBinary(byte[] binaryData)
{ {
// 创建缓存器 // 创建缓存器
BufferReader buffer = new BufferReader(binaryData); BufferReader buffer = new BufferReader(binaryData);
@@ -185,7 +218,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}");
DefaultBuiltinFileCatalog catalog = new DefaultBuiltinFileCatalog(); DefaultBuildinFileCatalog catalog = new DefaultBuildinFileCatalog();
{ {
// 读取文件头信息 // 读取文件头信息
catalog.FileVersion = fileVersion; catalog.FileVersion = fileVersion;
@@ -194,10 +227,10 @@ namespace YooAsset
// 读取资源包列表 // 读取资源包列表
int fileCount = buffer.ReadInt32(); int fileCount = buffer.ReadInt32();
catalog.Wrappers = new List<DefaultBuiltinFileCatalog.FileWrapper>(fileCount); catalog.Wrappers = new List<DefaultBuildinFileCatalog.FileWrapper>(fileCount);
for (int i = 0; i < fileCount; i++) for (int i = 0; i < fileCount; i++)
{ {
var fileWrapper = new DefaultBuiltinFileCatalog.FileWrapper(); var fileWrapper = new DefaultBuildinFileCatalog.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 DefaultBuiltinFileCatalog internal class DefaultBuildinFileCatalog
{ {
[Serializable] [Serializable]
public class FileWrapper public class FileWrapper

View File

@@ -8,7 +8,7 @@ namespace YooAsset
/// <summary> /// <summary>
/// 内置文件系统 /// 内置文件系统
/// </summary> /// </summary>
internal class DefaultBuiltinFileSystem : IFileSystem internal class DefaultBuildinFileSystem : 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> _builtinFilePathMapping = new Dictionary<string, string>(10000); protected readonly Dictionary<string, string> _buildinFilePathMapping = new Dictionary<string, string>(10000);
protected IFileSystem _unpackFileSystem; protected IFileSystem _unpackFileSystem;
protected string _packageRoot; protected string _packageRoot;
@@ -81,13 +81,18 @@ namespace YooAsset
/// <summary> /// <summary>
/// 自定义参数:拷贝内置清单 /// 自定义参数:拷贝内置清单
/// </summary> /// </summary>
public bool CopyBuiltinPackageManifest { private set; get; } = false; public bool CopyBuildinPackageManifest { private set; get; } = false;
/// <summary> /// <summary>
/// 自定义参数:拷贝内置清单的目标目录 /// 自定义参数:拷贝内置清单的目标目录
/// 注意:该参数为空的时候,会获取默认的沙盒目录! /// 注意:该参数为空的时候,会获取默认的沙盒目录!
/// </summary> /// </summary>
public string CopyBuiltinPackageManifestDestRoot { private set; get; } public string CopyBuildinPackageManifestDestRoot { private set; get; }
/// <summary>
/// 自定义参数:解压文件系统的根目录
/// </summary>
public string UnpackFileSystemRoot { private set; get; }
/// <summary> /// <summary>
/// 自定义参数:解密服务接口的实例类 /// 自定义参数:解密服务接口的实例类
@@ -106,7 +111,7 @@ namespace YooAsset
#endregion #endregion
public DefaultBuiltinFileSystem() public DefaultBuildinFileSystem()
{ {
} }
public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync() public virtual FSInitializeFileSystemOperation InitializeFileSystemAsync()
@@ -131,7 +136,7 @@ namespace YooAsset
public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadFileOptions options) public virtual FSDownloadFileOperation DownloadFileAsync(PackageBundle bundle, DownloadFileOptions options)
{ {
// 注意:业务层的解压器会依赖该方法 // 注意:业务层的解压器会依赖该方法
options.ImportFilePath = GetBuiltinFileLoadPath(bundle); options.ImportFilePath = GetBuildinFileLoadPath(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 +158,7 @@ namespace YooAsset
} }
else else
{ {
string error = $"{nameof(DefaultBuiltinFileSystem)} not support load bundle type : {bundle.BundleType}"; string error = $"{nameof(DefaultBuildinFileSystem)} not support load bundle type : {bundle.BundleType}";
var operation = new FSLoadBundleCompleteOperation(error); var operation = new FSLoadBundleCompleteOperation(error);
return operation; return operation;
} }
@@ -184,11 +189,15 @@ namespace YooAsset
} }
else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST) else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST)
{ {
CopyBuiltinPackageManifest = Convert.ToBoolean(value); CopyBuildinPackageManifest = Convert.ToBoolean(value);
} }
else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT) else if (name == FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT)
{ {
CopyBuiltinPackageManifestDestRoot = (string)value; CopyBuildinPackageManifestDestRoot = (string)value;
}
else if (name == FileSystemParametersDefine.UNPACK_FILE_SYSTEM_ROOT)
{
UnpackFileSystemRoot = (string)value;
} }
else if (name == FileSystemParametersDefine.DECRYPTION_SERVICES) else if (name == FileSystemParametersDefine.DECRYPTION_SERVICES)
{ {
@@ -212,7 +221,7 @@ namespace YooAsset
PackageName = packageName; PackageName = packageName;
if (string.IsNullOrEmpty(packageRoot)) if (string.IsNullOrEmpty(packageRoot))
_packageRoot = GetDefaultBuiltinPackageRoot(packageName); _packageRoot = GetDefaultBuildinPackageRoot(packageName);
else else
_packageRoot = packageRoot; _packageRoot = packageRoot;
@@ -226,7 +235,7 @@ namespace YooAsset
_unpackFileSystem.SetParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, AppendFileExtension); _unpackFileSystem.SetParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, AppendFileExtension);
_unpackFileSystem.SetParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, DecryptionServices); _unpackFileSystem.SetParameter(FileSystemParametersDefine.DECRYPTION_SERVICES, DecryptionServices);
_unpackFileSystem.SetParameter(FileSystemParametersDefine.COPY_LOCAL_FILE_SERVICES, CopyLocalFileServices); _unpackFileSystem.SetParameter(FileSystemParametersDefine.COPY_LOCAL_FILE_SERVICES, CopyLocalFileServices);
_unpackFileSystem.OnCreate(packageName, null); _unpackFileSystem.OnCreate(packageName, UnpackFileSystemRoot);
} }
public virtual void OnDestroy() public virtual void OnDestroy()
{ {
@@ -269,7 +278,7 @@ namespace YooAsset
if (IsUnpackBundleFile(bundle)) if (IsUnpackBundleFile(bundle))
return _unpackFileSystem.GetBundleFilePath(bundle); return _unpackFileSystem.GetBundleFilePath(bundle);
return GetBuiltinFileLoadPath(bundle); return GetBuildinFileLoadPath(bundle);
} }
public virtual byte[] ReadBundleFileData(PackageBundle bundle) public virtual byte[] ReadBundleFileData(PackageBundle bundle)
{ {
@@ -281,7 +290,7 @@ namespace YooAsset
#if UNITY_ANDROID #if UNITY_ANDROID
//TODO : 安卓平台内置文件属于APK压缩包内的文件。 //TODO : 安卓平台内置文件属于APK压缩包内的文件。
YooLogger.Error($"Android platform not support read builtin bundle file data !"); YooLogger.Error($"Android platform not support read buildin bundle file data !");
return null; return null;
#else #else
if (bundle.Encrypted) if (bundle.Encrypted)
@@ -292,7 +301,7 @@ namespace YooAsset
return null; return null;
} }
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -303,7 +312,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(bundle);
return FileUtility.ReadAllBytes(filePath); return FileUtility.ReadAllBytes(filePath);
} }
#endif #endif
@@ -318,7 +327,7 @@ namespace YooAsset
#if UNITY_ANDROID #if UNITY_ANDROID
//TODO : 安卓平台内置文件属于APK压缩包内的文件。 //TODO : 安卓平台内置文件属于APK压缩包内的文件。
YooLogger.Error($"Android platform not support read builtin bundle file text !"); YooLogger.Error($"Android platform not support read buildin bundle file text !");
return null; return null;
#else #else
if (bundle.Encrypted) if (bundle.Encrypted)
@@ -329,7 +338,7 @@ namespace YooAsset
return null; return null;
} }
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -340,7 +349,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(bundle);
return FileUtility.ReadAllText(filePath); return FileUtility.ReadAllText(filePath);
} }
#endif #endif
@@ -368,38 +377,38 @@ namespace YooAsset
} }
#region #region
protected string GetDefaultBuiltinPackageRoot(string packageName) protected string GetDefaultBuildinPackageRoot(string packageName)
{ {
string rootDirectory = YooAssetSettingsData.GetYooDefaultBuiltinRoot(); string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot();
return PathUtility.Combine(rootDirectory, packageName); return PathUtility.Combine(rootDirectory, packageName);
} }
public string GetBuiltinFileLoadPath(PackageBundle bundle) public string GetBuildinFileLoadPath(PackageBundle bundle)
{ {
if (_builtinFilePathMapping.TryGetValue(bundle.BundleGUID, out string filePath) == false) if (_buildinFilePathMapping.TryGetValue(bundle.BundleGUID, out string filePath) == false)
{ {
filePath = PathUtility.Combine(_packageRoot, bundle.FileName); filePath = PathUtility.Combine(_packageRoot, bundle.FileName);
_builtinFilePathMapping.Add(bundle.BundleGUID, filePath); _buildinFilePathMapping.Add(bundle.BundleGUID, filePath);
} }
return filePath; return filePath;
} }
public string GetBuiltinPackageVersionFilePath() public string GetBuildinPackageVersionFilePath()
{ {
string fileName = YooAssetSettingsData.GetPackageVersionFileName(PackageName); string fileName = YooAssetSettingsData.GetPackageVersionFileName(PackageName);
return PathUtility.Combine(_packageRoot, fileName); return PathUtility.Combine(_packageRoot, fileName);
} }
public string GetBuiltinPackageHashFilePath(string packageVersion) public string GetBuildinPackageHashFilePath(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 GetBuiltinPackageManifestFilePath(string packageVersion) public string GetBuildinPackageManifestFilePath(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, DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName); return PathUtility.Combine(_packageRoot, DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName);
} }
/// <summary> /// <summary>
@@ -409,7 +418,7 @@ namespace YooAsset
{ {
if (_wrappers.ContainsKey(bundleGUID)) if (_wrappers.ContainsKey(bundleGUID))
{ {
YooLogger.Error($"{nameof(DefaultBuiltinFileSystem)} has element : {bundleGUID}"); YooLogger.Error($"{nameof(DefaultBuildinFileSystem)} has element : {bundleGUID}");
return false; return false;
} }
@@ -430,7 +439,7 @@ namespace YooAsset
/// </summary> /// </summary>
public DecryptResult LoadEncryptedAssetBundle(PackageBundle bundle) public DecryptResult LoadEncryptedAssetBundle(PackageBundle bundle)
{ {
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(bundle);
var fileInfo = new DecryptFileInfo() var fileInfo = new DecryptFileInfo()
{ {
BundleName = bundle.BundleName, BundleName = bundle.BundleName,
@@ -445,7 +454,7 @@ namespace YooAsset
/// </summary> /// </summary>
public DecryptResult LoadEncryptedAssetBundleAsync(PackageBundle bundle) public DecryptResult LoadEncryptedAssetBundleAsync(PackageBundle bundle)
{ {
string filePath = GetBuiltinFileLoadPath(bundle); string filePath = GetBuildinFileLoadPath(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 DefaultBuiltinFileSystemDefine internal class DefaultBuildinFileSystemDefine
{ {
/// <summary> /// <summary>
/// 内置清单JSON文件名称 /// 内置清单JSON文件名称
/// </summary> /// </summary>
public const string BuiltinCatalogJsonFileName = "BuiltinCatalog.json"; public const string BuildinCatalogJsonFileName = "BuildinCatalog.json";
/// <summary> /// <summary>
/// 内置清单二进制文件名称 /// 内置清单二进制文件名称
/// </summary> /// </summary>
public const string BuiltinCatalogBinaryFileName = "BuiltinCatalog.bytes"; public const string BuildinCatalogBinaryFileName = "BuildinCatalog.bytes";
} }
} }

View File

@@ -8,23 +8,23 @@ namespace YooAsset
private enum ESteps private enum ESteps
{ {
None, None,
LoadBuiltinPackageVersion, LoadBuildinPackageVersion,
CopyBuiltinPackageHash, CopyBuildinPackageHash,
CopyBuiltinPackageManifest, CopyBuildinPackageManifest,
InitUnpackFileSystem, InitUnpackFileSystem,
LoadCatalogFile, LoadCatalogFile,
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _fileSystem;
private RequestBuiltinPackageVersionOperation _requestBuiltinPackageVersionOp; private RequestBuildinPackageVersionOperation _requestBuildinPackageVersionOp;
private CopyBuiltinFileOperation _copyBuiltinHashFileOp; private CopyBuildinFileOperation _copyBuildinHashFileOp;
private CopyBuiltinFileOperation _copyBuiltinManifestFileOp; private CopyBuildinFileOperation _copyBuildinManifestFileOp;
private FSInitializeFileSystemOperation _initUnpackFIleSystemOp; private FSInitializeFileSystemOperation _initUnpackFIleSystemOp;
private LoadBuiltinCatalogFileOperation _loadBuiltinCatalogFileOp; private LoadBuildinCatalogFileOperation _loadBuildinCatalogFileOp;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSInitializeOperation(DefaultBuiltinFileSystem fileSystem) internal DBFSInitializeOperation(DefaultBuildinFileSystem 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(DefaultBuiltinFileSystem)} is not support WEBGL platform !"; Error = $"{nameof(DefaultBuildinFileSystem)} is not support WEBGL platform !";
#else #else
if (_fileSystem.CopyBuiltinPackageManifest) if (_fileSystem.CopyBuildinPackageManifest)
_steps = ESteps.LoadBuiltinPackageVersion; _steps = ESteps.LoadBuildinPackageVersion;
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.LoadBuiltinPackageVersion) if (_steps == ESteps.LoadBuildinPackageVersion)
{ {
if (_requestBuiltinPackageVersionOp == null) if (_requestBuildinPackageVersionOp == null)
{ {
_requestBuiltinPackageVersionOp = new RequestBuiltinPackageVersionOperation(_fileSystem); _requestBuildinPackageVersionOp = new RequestBuildinPackageVersionOperation(_fileSystem);
_requestBuiltinPackageVersionOp.StartOperation(); _requestBuildinPackageVersionOp.StartOperation();
AddChildOperation(_requestBuiltinPackageVersionOp); AddChildOperation(_requestBuildinPackageVersionOp);
} }
_requestBuiltinPackageVersionOp.UpdateOperation(); _requestBuildinPackageVersionOp.UpdateOperation();
if (_requestBuiltinPackageVersionOp.IsDone == false) if (_requestBuildinPackageVersionOp.IsDone == false)
return; return;
if (_requestBuiltinPackageVersionOp.Status == EOperationStatus.Succeed) if (_requestBuildinPackageVersionOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.CopyBuiltinPackageHash; _steps = ESteps.CopyBuildinPackageHash;
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _requestBuiltinPackageVersionOp.Error; Error = _requestBuildinPackageVersionOp.Error;
} }
} }
if (_steps == ESteps.CopyBuiltinPackageHash) if (_steps == ESteps.CopyBuildinPackageHash)
{ {
if (_copyBuiltinHashFileOp == null) if (_copyBuildinHashFileOp == null)
{ {
string packageVersion = _requestBuiltinPackageVersionOp.PackageVersion; string packageVersion = _requestBuildinPackageVersionOp.PackageVersion;
string destFilePath = GetCopyPackageHashDestPath(packageVersion); string destFilePath = GetCopyPackageHashDestPath(packageVersion);
string sourceFilePath = _fileSystem.GetBuiltinPackageHashFilePath(packageVersion); string sourceFilePath = _fileSystem.GetBuildinPackageHashFilePath(packageVersion);
_copyBuiltinHashFileOp = new CopyBuiltinFileOperation(sourceFilePath, destFilePath); _copyBuildinHashFileOp = new CopyBuildinFileOperation(sourceFilePath, destFilePath);
_copyBuiltinHashFileOp.StartOperation(); _copyBuildinHashFileOp.StartOperation();
AddChildOperation(_copyBuiltinHashFileOp); AddChildOperation(_copyBuildinHashFileOp);
} }
_copyBuiltinHashFileOp.UpdateOperation(); _copyBuildinHashFileOp.UpdateOperation();
if (_copyBuiltinHashFileOp.IsDone == false) if (_copyBuildinHashFileOp.IsDone == false)
return; return;
if (_copyBuiltinHashFileOp.Status == EOperationStatus.Succeed) if (_copyBuildinHashFileOp.Status == EOperationStatus.Succeed)
{ {
_steps = ESteps.CopyBuiltinPackageManifest; _steps = ESteps.CopyBuildinPackageManifest;
} }
else else
{ {
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Failed; Status = EOperationStatus.Failed;
Error = _copyBuiltinHashFileOp.Error; Error = _copyBuildinHashFileOp.Error;
} }
} }
if (_steps == ESteps.CopyBuiltinPackageManifest) if (_steps == ESteps.CopyBuildinPackageManifest)
{ {
if (_copyBuiltinManifestFileOp == null) if (_copyBuildinManifestFileOp == null)
{ {
string packageVersion = _requestBuiltinPackageVersionOp.PackageVersion; string packageVersion = _requestBuildinPackageVersionOp.PackageVersion;
string destFilePath = GetCopyPackageManifestDestPath(packageVersion); string destFilePath = GetCopyPackageManifestDestPath(packageVersion);
string sourceFilePath = _fileSystem.GetBuiltinPackageManifestFilePath(packageVersion); string sourceFilePath = _fileSystem.GetBuildinPackageManifestFilePath(packageVersion);
_copyBuiltinManifestFileOp = new CopyBuiltinFileOperation(sourceFilePath, destFilePath); _copyBuildinManifestFileOp = new CopyBuildinFileOperation(sourceFilePath, destFilePath);
_copyBuiltinManifestFileOp.StartOperation(); _copyBuildinManifestFileOp.StartOperation();
AddChildOperation(_copyBuiltinManifestFileOp); AddChildOperation(_copyBuildinManifestFileOp);
} }
_copyBuiltinManifestFileOp.UpdateOperation(); _copyBuildinManifestFileOp.UpdateOperation();
if (_copyBuiltinManifestFileOp.IsDone == false) if (_copyBuildinManifestFileOp.IsDone == false)
return; return;
if (_copyBuiltinManifestFileOp.Status == EOperationStatus.Succeed) if (_copyBuildinManifestFileOp.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 = _copyBuiltinManifestFileOp.Error; Error = _copyBuildinManifestFileOp.Error;
} }
} }
@@ -163,20 +163,20 @@ namespace YooAsset
if (_steps == ESteps.LoadCatalogFile) if (_steps == ESteps.LoadCatalogFile)
{ {
if (_loadBuiltinCatalogFileOp == null) if (_loadBuildinCatalogFileOp == null)
{ {
_loadBuiltinCatalogFileOp = new LoadBuiltinCatalogFileOperation(_fileSystem); _loadBuildinCatalogFileOp = new LoadBuildinCatalogFileOperation(_fileSystem);
_loadBuiltinCatalogFileOp.StartOperation(); _loadBuildinCatalogFileOp.StartOperation();
AddChildOperation(_loadBuiltinCatalogFileOp); AddChildOperation(_loadBuildinCatalogFileOp);
} }
_loadBuiltinCatalogFileOp.UpdateOperation(); _loadBuildinCatalogFileOp.UpdateOperation();
if (_loadBuiltinCatalogFileOp.IsDone == false) if (_loadBuildinCatalogFileOp.IsDone == false)
return; return;
if (_loadBuiltinCatalogFileOp.Status == EOperationStatus.Succeed) if (_loadBuildinCatalogFileOp.Status == EOperationStatus.Succeed)
{ {
var catalog = _loadBuiltinCatalogFileOp.Catalog; var catalog = _loadBuildinCatalogFileOp.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 DefaultBuiltinFileSystem.FileWrapper(wrapper.FileName); var fileWrapper = new DefaultBuildinFileSystem.FileWrapper(wrapper.FileName);
_fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper); _fileSystem.RecordCatalogFile(wrapper.BundleGUID, fileWrapper);
} }
YooLogger.Log($"Package '{_fileSystem.PackageName}' builtin catalog files count : {catalog.Wrappers.Count}"); YooLogger.Log($"Package '{_fileSystem.PackageName}' buildin 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 = _loadBuiltinCatalogFileOp.Error; Error = _loadBuildinCatalogFileOp.Error;
} }
} }
} }
private string GetCopyManifestFileRoot() private string GetCopyManifestFileRoot()
{ {
string destRoot = _fileSystem.CopyBuiltinPackageManifestDestRoot; string destRoot = _fileSystem.CopyBuildinPackageManifestDestRoot;
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 DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _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(DefaultBuiltinFileSystem fileSystem, PackageBundle bundle) internal DBFSLoadAssetBundleOperation(DefaultBuildinFileSystem fileSystem, PackageBundle bundle)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
_bundle = bundle; _bundle = bundle;
@@ -64,7 +64,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuildinFileLoadPath(_bundle);
_assetBundle = AssetBundle.LoadFromFile(filePath); _assetBundle = AssetBundle.LoadFromFile(filePath);
} }
} }
@@ -78,7 +78,7 @@ namespace YooAsset
} }
else else
{ {
string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuildinFileLoadPath(_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 builtin asset bundle file : {_bundle.BundleName}"; Error = $"Failed to load encrypted buildin 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 builtin asset bundle file : {_bundle.BundleName}"; Error = $"Failed to load buildin 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,
LoadBuiltinRawBundle, LoadBuildinRawBundle,
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _fileSystem;
private readonly PackageBundle _bundle; private readonly PackageBundle _bundle;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal DBFSLoadRawBundleOperation(DefaultBuiltinFileSystem fileSystem, PackageBundle bundle) internal DBFSLoadRawBundleOperation(DefaultBuildinFileSystem 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.LoadBuiltinRawBundle; _steps = ESteps.LoadBuildinRawBundle;
} }
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.LoadBuiltinRawBundle) if (_steps == ESteps.LoadBuildinRawBundle)
{ {
string filePath = _fileSystem.GetBuiltinFileLoadPath(_bundle); string filePath = _fileSystem.GetBuildinFileLoadPath(_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 builtin raw bundle file : {filePath}"; Error = $"Can not load android buildin 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 builtin raw bundle file : {filePath}"; Error = $"Can not found buildin 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,
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

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

View File

@@ -3,7 +3,7 @@ using System.IO;
namespace YooAsset namespace YooAsset
{ {
internal class CopyBuiltinFileOperation : AsyncOperationBase internal class CopyBuildinFileOperation : 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 CopyBuiltinFileOperation(string sourceFilePath, string destFilePath) public CopyBuildinFileOperation(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 builtin file : {ex.Message}"); YooLogger.Warning($"Failed copy buildin 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 LoadBuiltinCatalogFileOperation : AsyncOperationBase internal sealed class LoadBuildinCatalogFileOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -14,7 +14,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _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 DefaultBuiltinFileCatalog Catalog; public DefaultBuildinFileCatalog Catalog;
internal LoadBuiltinCatalogFileOperation(DefaultBuiltinFileSystem fileSystem) internal LoadBuildinCatalogFileOperation(DefaultBuildinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class LoadBuiltinPackageManifestOperation : AsyncOperationBase internal class LoadBuildinPackageManifestOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -14,7 +14,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _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 LoadBuiltinPackageManifestOperation(DefaultBuiltinFileSystem fileSystem, string packageVersion, string packageHash) internal LoadBuildinPackageManifestOperation(DefaultBuildinFileSystem 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.GetBuiltinPackageManifestFilePath(_packageVersion); string filePath = _fileSystem.GetBuildinPackageManifestFilePath(_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.GetBuiltinPackageManifestFilePath(_packageVersion); string filePath = _fileSystem.GetBuildinPackageManifestFilePath(_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 builtin package manifest file !"; Error = "Failed to verify buildin package manifest file !";
} }
} }

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class RequestBuiltinPackageHashOperation : AsyncOperationBase internal class RequestBuildinPackageHashOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -13,7 +13,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _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 RequestBuiltinPackageHashOperation(DefaultBuiltinFileSystem fileSystem, string packageVersion) internal RequestBuildinPackageHashOperation(DefaultBuildinFileSystem 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.GetBuiltinPackageHashFilePath(_packageVersion); string filePath = _fileSystem.GetBuildinPackageHashFilePath(_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.GetBuiltinPackageHashFilePath(_packageVersion); string filePath = _fileSystem.GetBuildinPackageHashFilePath(_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 = $"Builtin package hash file content is empty !"; Error = $"Buildin package hash file content is empty !";
} }
else else
{ {

View File

@@ -2,7 +2,7 @@
namespace YooAsset namespace YooAsset
{ {
internal class RequestBuiltinPackageVersionOperation : AsyncOperationBase internal class RequestBuildinPackageVersionOperation : AsyncOperationBase
{ {
private enum ESteps private enum ESteps
{ {
@@ -13,7 +13,7 @@ namespace YooAsset
Done, Done,
} }
private readonly DefaultBuiltinFileSystem _fileSystem; private readonly DefaultBuildinFileSystem _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 RequestBuiltinPackageVersionOperation(DefaultBuiltinFileSystem fileSystem) internal RequestBuildinPackageVersionOperation(DefaultBuildinFileSystem fileSystem)
{ {
_fileSystem = fileSystem; _fileSystem = fileSystem;
} }
@@ -38,7 +38,7 @@ namespace YooAsset
if (_steps == ESteps.TryLoadPackageVersion) if (_steps == ESteps.TryLoadPackageVersion)
{ {
string filePath = _fileSystem.GetBuiltinPackageVersionFilePath(); string filePath = _fileSystem.GetBuildinPackageVersionFilePath();
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.GetBuiltinPackageVersionFilePath(); string filePath = _fileSystem.GetBuildinPackageVersionFilePath();
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 = $"Builtin package version file content is empty !"; Error = $"Buildin package version file content is empty !";
} }
else else
{ {

View File

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

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

@@ -158,6 +158,11 @@ namespace YooAsset
var operation = new ClearUnusedCacheBundleFilesOperation(this, manifest); var operation = new ClearUnusedCacheBundleFilesOperation(this, manifest);
return operation; return operation;
} }
else if (options.ClearMode == EFileClearMode.ClearBundleFilesByLocations.ToString())
{
var operation = new ClearCacheBundleFilesByLocationsOperaiton(this, manifest, options.ClearParam);
return operation;
}
else if (options.ClearMode == EFileClearMode.ClearBundleFilesByTags.ToString()) else if (options.ClearMode == EFileClearMode.ClearBundleFilesByTags.ToString())
{ {
var operation = new ClearCacheBundleFilesByTagsOperaiton(this, manifest, options.ClearParam); var operation = new ClearCacheBundleFilesByTagsOperaiton(this, manifest, options.ClearParam);

View File

@@ -11,6 +11,7 @@ namespace YooAsset
None, None,
CheckExist, CheckExist,
DownloadFile, DownloadFile,
AbortDownload,
LoadAssetBundle, LoadAssetBundle,
CheckResult, CheckResult,
Done, Done,
@@ -63,6 +64,17 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.DownloadFile)
{
// 中断下载
if (AbortDownloadFile)
{
if (_downloadFileOp != null)
_downloadFileOp.AbortOperation();
_steps = ESteps.AbortDownload;
}
}
if (_steps == ESteps.DownloadFile) if (_steps == ESteps.DownloadFile)
{ {
if (_downloadFileOp == null) if (_downloadFileOp == null)
@@ -94,6 +106,23 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.AbortDownload)
{
if (_downloadFileOp != null)
{
if (IsWaitForAsyncComplete)
_downloadFileOp.WaitForAsyncComplete();
_downloadFileOp.UpdateOperation();
if (_downloadFileOp.IsDone == false)
return;
}
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Abort download file !";
}
if (_steps == ESteps.LoadAssetBundle) if (_steps == ESteps.LoadAssetBundle)
{ {
if (_bundle.Encrypted) if (_bundle.Encrypted)
@@ -251,6 +280,7 @@ namespace YooAsset
None, None,
CheckExist, CheckExist,
DownloadFile, DownloadFile,
AbortDownload,
LoadCacheRawBundle, LoadCacheRawBundle,
Done, Done,
} }
@@ -310,6 +340,17 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.DownloadFile)
{
// 中断下载
if (AbortDownloadFile)
{
if (_downloadFileOp != null)
_downloadFileOp.AbortOperation();
_steps = ESteps.AbortDownload;
}
}
if (_steps == ESteps.DownloadFile) if (_steps == ESteps.DownloadFile)
{ {
if (_downloadFileOp == null) if (_downloadFileOp == null)
@@ -341,6 +382,23 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.AbortDownload)
{
if (_downloadFileOp != null)
{
if (IsWaitForAsyncComplete)
_downloadFileOp.WaitForAsyncComplete();
_downloadFileOp.UpdateOperation();
if (_downloadFileOp.IsDone == false)
return;
}
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Abort download file !";
}
if (_steps == ESteps.LoadCacheRawBundle) if (_steps == ESteps.LoadCacheRawBundle)
{ {
string filePath = _fileSystem.GetCacheBundleFileLoadPath(_bundle); string filePath = _fileSystem.GetCacheBundleFileLoadPath(_bundle);

View File

@@ -0,0 +1,142 @@
using System.Collections.Generic;
namespace YooAsset
{
internal class ClearCacheBundleFilesByLocationsOperaiton : FSClearCacheFilesOperation
{
private enum ESteps
{
None,
CheckManifest,
CheckArgs,
GetClearCacheFiles,
ClearFilterCacheFiles,
Done,
}
private readonly DefaultCacheFileSystem _fileSystem;
private readonly PackageManifest _manifest;
private readonly object _clearParam;
private string[] _locations;
private List<string> _clearBundleGUIDs;
private int _clearFileTotalCount = 0;
private ESteps _steps = ESteps.None;
internal ClearCacheBundleFilesByLocationsOperaiton(DefaultCacheFileSystem fileSystem, PackageManifest manifest, object clearParam)
{
_fileSystem = fileSystem;
_manifest = manifest;
_clearParam = clearParam;
}
internal override void InternalStart()
{
_steps = ESteps.CheckManifest;
}
internal override void InternalUpdate()
{
if (_steps == ESteps.None || _steps == ESteps.Done)
return;
if (_steps == ESteps.CheckManifest)
{
if (_manifest == null)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Can not found active package manifest !";
}
else
{
_steps = ESteps.CheckArgs;
}
}
if (_steps == ESteps.CheckArgs)
{
if (_clearParam == null)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Clear param is null !";
return;
}
if (_clearParam is string)
{
_locations = new string[] { _clearParam as string };
}
else if (_clearParam is List<string>)
{
var tempList = _clearParam as List<string>;
_locations = tempList.ToArray();
}
else if (_clearParam is string[])
{
_locations = _clearParam as string[];
}
else
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = $"Invalid clear param : {_clearParam.GetType().FullName}";
return;
}
_steps = ESteps.GetClearCacheFiles;
}
if (_steps == ESteps.GetClearCacheFiles)
{
_clearBundleGUIDs = GetBundleGUIDsByLocation();
_clearFileTotalCount = _clearBundleGUIDs.Count;
_steps = ESteps.ClearFilterCacheFiles;
}
if (_steps == ESteps.ClearFilterCacheFiles)
{
for (int i = _clearBundleGUIDs.Count - 1; i >= 0; i--)
{
string bundleGUID = _clearBundleGUIDs[i];
_fileSystem.DeleteCacheBundleFile(bundleGUID);
_clearBundleGUIDs.RemoveAt(i);
if (OperationSystem.IsBusy)
break;
}
if (_clearFileTotalCount == 0)
Progress = 1.0f;
else
Progress = 1.0f - (_clearBundleGUIDs.Count / _clearFileTotalCount);
if (_clearBundleGUIDs.Count == 0)
{
_steps = ESteps.Done;
Status = EOperationStatus.Succeed;
}
}
}
private List<string> GetBundleGUIDsByLocation()
{
List<string> result = new List<string>(_locations.Length);
foreach (var location in _locations)
{
string assetPath = _manifest.TryMappingToAssetPath(location);
if (_manifest.TryGetPackageAsset(assetPath, out PackageAsset packageAsset))
{
PackageBundle bundle = _manifest.GetMainPackageBundle(packageAsset.BundleID);
if (bundle != null)
{
result.Add(bundle.BundleGUID);
}
}
}
return result;
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 0be6ffd570645bf4a95126958a8e8a86
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -20,7 +20,7 @@ namespace YooAsset
private UnityDownloadFileOperation _unityDownloadFileOp; private UnityDownloadFileOperation _unityDownloadFileOp;
protected int _requestCount = 0; protected int _requestCount = 0;
protected float _tryAgainTimer; protected float _tryAgainTimer = 0;
protected int _failedTryAgain; protected int _failedTryAgain;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;

View File

@@ -16,7 +16,7 @@ namespace YooAsset
} }
private readonly DefaultCacheFileSystem _fileSystem; private readonly DefaultCacheFileSystem _fileSystem;
private IEnumerator<DirectoryInfo> _filesEnumerator = null; private IEnumerator<string> _filesEnumerator = null;
private float _verifyStartTime; private float _verifyStartTime;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
@@ -42,11 +42,11 @@ namespace YooAsset
if (_steps == ESteps.Prepare) if (_steps == ESteps.Prepare)
{ {
DirectoryInfo rootDirectory = new DirectoryInfo(_fileSystem.GetCacheBundleFilesRoot()); string rootDirectory = _fileSystem.GetCacheBundleFilesRoot();
if (rootDirectory.Exists) if (Directory.Exists(rootDirectory))
{ {
var directorieInfos = rootDirectory.EnumerateDirectories(); var directories = Directory.EnumerateDirectories(rootDirectory);
_filesEnumerator = directorieInfos.GetEnumerator(); _filesEnumerator = directories.GetEnumerator();
} }
_steps = ESteps.SearchFiles; _steps = ESteps.SearchFiles;
} }
@@ -76,15 +76,15 @@ namespace YooAsset
break; break;
var rootFoder = _filesEnumerator.Current; var rootFoder = _filesEnumerator.Current;
var childDirectories = rootFoder.GetDirectories(); var childDirectories = Directory.EnumerateDirectories(rootFoder);
foreach (var chidDirectory in childDirectories) foreach (var chidDirectory in childDirectories)
{ {
string bundleGUID = chidDirectory.Name; string bundleGUID = Path.GetFileName(chidDirectory);
if (_fileSystem.IsRecordBundleFile(bundleGUID)) if (_fileSystem.IsRecordBundleFile(bundleGUID))
continue; continue;
// 创建验证元素类 // 创建验证元素类
string fileRootPath = chidDirectory.FullName; string fileRootPath = chidDirectory;
string dataFilePath = $"{fileRootPath}/{DefaultCacheFileSystemDefine.BundleDataFileName}"; string dataFilePath = $"{fileRootPath}/{DefaultCacheFileSystemDefine.BundleDataFileName}";
string infoFilePath = $"{fileRootPath}/{DefaultCacheFileSystemDefine.BundleInfoFileName}"; string infoFilePath = $"{fileRootPath}/{DefaultCacheFileSystemDefine.BundleInfoFileName}";
@@ -108,18 +108,16 @@ namespace YooAsset
return isFindItem; return isFindItem;
} }
private string FindDataFileExtension(DirectoryInfo directoryInfo) private string FindDataFileExtension(string directory)
{ {
string dataFileExtension = string.Empty; string dataFileExtension = string.Empty;
var fileInfos = directoryInfo.GetFiles(); string searchPattern = DefaultCacheFileSystemDefine.BundleDataFileName + "*";
foreach (var fileInfo in fileInfos) var dataFiles = Directory.EnumerateFiles(directory, searchPattern);
foreach (var filePath in dataFiles)
{ {
if (fileInfo.Name.StartsWith(DefaultCacheFileSystemDefine.BundleDataFileName)) dataFileExtension = Path.GetExtension(filePath);
{
dataFileExtension = fileInfo.Extension;
break; break;
} }
}
return dataFileExtension; return dataFileExtension;
} }
} }

View File

@@ -8,6 +8,7 @@ namespace YooAsset
None, None,
CheckExist, CheckExist,
DownloadFile, DownloadFile,
AbortDownload,
LoadAssetBundle, LoadAssetBundle,
CheckResult, CheckResult,
Done, Done,
@@ -48,6 +49,17 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.DownloadFile)
{
// 中断下载
if (AbortDownloadFile)
{
if (_downloadFileOp != null)
_downloadFileOp.AbortOperation();
_steps = ESteps.AbortDownload;
}
}
if (_steps == ESteps.DownloadFile) if (_steps == ESteps.DownloadFile)
{ {
if (_downloadFileOp == null) if (_downloadFileOp == null)
@@ -79,6 +91,23 @@ namespace YooAsset
} }
} }
if (_steps == ESteps.AbortDownload)
{
if (_downloadFileOp != null)
{
if (IsWaitForAsyncComplete)
_downloadFileOp.WaitForAsyncComplete();
_downloadFileOp.UpdateOperation();
if (_downloadFileOp.IsDone == false)
return;
}
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Abort download file !";
}
if (_steps == ESteps.LoadAssetBundle) if (_steps == ESteps.LoadAssetBundle)
{ {
if (IsWaitForAsyncComplete) if (IsWaitForAsyncComplete)

View File

@@ -20,7 +20,7 @@ namespace YooAsset
protected UnityVirtualBundleRequestOperation _unityDownloadFileOp; protected UnityVirtualBundleRequestOperation _unityDownloadFileOp;
protected int _requestCount = 0; protected int _requestCount = 0;
protected float _tryAgainTimer; protected float _tryAgainTimer = 0;
protected int _failedTryAgain; protected int _failedTryAgain;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;

View File

@@ -4,12 +4,12 @@ namespace YooAsset
{ {
internal class DefaultUnpackRemoteServices : IRemoteServices internal class DefaultUnpackRemoteServices : IRemoteServices
{ {
private readonly string _builtinPackageRoot; private readonly string _buildinPackageRoot;
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 builtinPackRoot) public DefaultUnpackRemoteServices(string buildinPackRoot)
{ {
_builtinPackageRoot = builtinPackRoot; _buildinPackageRoot = buildinPackRoot;
} }
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(_builtinPackageRoot, fileName); string filePath = PathUtility.Combine(_buildinPackageRoot, fileName);
url = DownloadSystemHelper.ConvertToWWWPath(filePath); url = DownloadSystemHelper.ConvertToWWWPath(filePath);
_mapping.Add(fileName, url); _mapping.Add(fileName, url);
} }

View File

@@ -180,7 +180,7 @@ namespace YooAsset
#region #region
protected string GetDefaultWebPackageRoot(string packageName) protected string GetDefaultWebPackageRoot(string packageName)
{ {
string rootDirectory = YooAssetSettingsData.GetYooDefaultBuiltinRoot(); string rootDirectory = YooAssetSettingsData.GetYooDefaultBuildinRoot();
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, DefaultBuiltinFileSystemDefine.BuiltinCatalogBinaryFileName); return PathUtility.Combine(_webPackageRoot, DefaultBuildinFileSystemDefine.BuildinCatalogBinaryFileName);
} }
/// <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}' builtin catalog files count : {catalog.Wrappers.Count}"); YooLogger.Log($"Package '{_fileSystem.PackageName}' buildin catalog files count : {catalog.Wrappers.Count}");
_steps = ESteps.Done; _steps = ESteps.Done;
Status = EOperationStatus.Succeed; Status = EOperationStatus.Succeed;
} }

View File

@@ -16,6 +16,12 @@ namespace YooAsset
/// </summary> /// </summary>
ClearUnusedBundleFiles, ClearUnusedBundleFiles,
/// <summary>
/// 清理指定地址的文件
/// 说明需要指定参数可选string, string[], List<string>
/// </summary>
ClearBundleFilesByLocations,
/// <summary> /// <summary>
/// 清理指定标签的文件 /// 清理指定标签的文件
/// 说明需要指定参数可选string, string[], List<string> /// 说明需要指定参数可选string, string[], List<string>

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 CreateDefaultBuiltinFileSystemParameters(IDecryptionServices decryptionServices = null, string packageRoot = null) public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices = null, string packageRoot = null)
{ {
string fileSystemClass = typeof(DefaultBuiltinFileSystem).FullName; string fileSystemClass = typeof(DefaultBuildinFileSystem).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

@@ -26,5 +26,6 @@ namespace YooAsset
public const string COPY_BUILDIN_PACKAGE_MANIFEST = "COPY_BUILDIN_PACKAGE_MANIFEST"; public const string COPY_BUILDIN_PACKAGE_MANIFEST = "COPY_BUILDIN_PACKAGE_MANIFEST";
public const string COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT = "COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT"; public const string COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT = "COPY_BUILDIN_PACKAGE_MANIFEST_DEST_ROOT";
public const string COPY_LOCAL_FILE_SERVICES = "COPY_LOCAL_FILE_SERVICES"; public const string COPY_LOCAL_FILE_SERVICES = "COPY_LOCAL_FILE_SERVICES";
public const string UNPACK_FILE_SYSTEM_ROOT = "UNPACK_FILE_SYSTEM_ROOT";
} }
} }

View File

@@ -17,6 +17,11 @@ namespace YooAsset
/// 下载大小 /// 下载大小
/// </summary> /// </summary>
public long DownloadedBytes { protected set; get; } = 0; public long DownloadedBytes { protected set; get; } = 0;
/// <summary>
/// 终止下载文件
/// </summary>
public bool AbortDownloadFile = false;
} }
internal sealed class FSLoadBundleCompleteOperation : FSLoadBundleOperation internal sealed class FSLoadBundleCompleteOperation : FSLoadBundleOperation

View File

@@ -18,15 +18,16 @@ namespace YooAsset
private readonly IWebDecryptionServices _decryptionServices; private readonly IWebDecryptionServices _decryptionServices;
private UnityWebDataRequestOperation _unityWebDataRequestOp; private UnityWebDataRequestOperation _unityWebDataRequestOp;
protected int _requestCount = 0; private int _requestCount = 0;
protected float _tryAgainTimer; private float _tryAgainTimer = 0;
protected int _failedTryAgain; private int _failedTryAgain;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
internal LoadWebEncryptAssetBundleOperation(PackageBundle bundle, DownloadFileOptions options, IWebDecryptionServices decryptionServices) internal LoadWebEncryptAssetBundleOperation(PackageBundle bundle, DownloadFileOptions options, IWebDecryptionServices decryptionServices)
{ {
_bundle = bundle; _bundle = bundle;
_options = options; _options = options;
_failedTryAgain = options.FailedTryAgain;
_decryptionServices = decryptionServices; _decryptionServices = decryptionServices;
} }
internal override void InternalStart() internal override void InternalStart()

View File

@@ -18,9 +18,9 @@ namespace YooAsset
private readonly bool _disableUnityWebCache; private readonly bool _disableUnityWebCache;
private UnityAssetBundleRequestOperation _unityAssetBundleRequestOp; private UnityAssetBundleRequestOperation _unityAssetBundleRequestOp;
protected int _requestCount = 0; private int _requestCount = 0;
protected float _tryAgainTimer; private float _tryAgainTimer = 0;
protected int _failedTryAgain; private int _failedTryAgain;
private ESteps _steps = ESteps.None; private ESteps _steps = ESteps.None;
@@ -28,6 +28,7 @@ namespace YooAsset
{ {
_bundle = bundle; _bundle = bundle;
_options = options; _options = options;
_failedTryAgain = options.FailedTryAgain;
_disableUnityWebCache = disableUnityWebCache; _disableUnityWebCache = disableUnityWebCache;
} }
internal override void InternalStart() internal override void InternalStart()

View File

@@ -43,6 +43,11 @@ namespace YooAsset
/// </summary> /// </summary>
public int BundleLoadingMaxConcurrency = int.MaxValue; public int BundleLoadingMaxConcurrency = int.MaxValue;
/// <summary>
/// 当资源引用计数为零的时候自动释放资源包
/// </summary>
public bool AutoUnloadBundleWhenUnused = false;
/// <summary> /// <summary>
/// WebGL平台强制同步加载资源对象 /// WebGL平台强制同步加载资源对象
/// </summary> /// </summary>
@@ -71,7 +76,7 @@ namespace YooAsset
/// </summary> /// </summary>
public class OfflinePlayModeParameters : InitializeParameters public class OfflinePlayModeParameters : InitializeParameters
{ {
public FileSystemParameters BuiltinFileSystemParameters; public FileSystemParameters BuildinFileSystemParameters;
} }
/// <summary> /// <summary>
@@ -79,7 +84,7 @@ namespace YooAsset
/// </summary> /// </summary>
public class HostPlayModeParameters : InitializeParameters public class HostPlayModeParameters : InitializeParameters
{ {
public FileSystemParameters BuiltinFileSystemParameters; public FileSystemParameters BuildinFileSystemParameters;
public FileSystemParameters CacheFileSystemParameters; public FileSystemParameters CacheFileSystemParameters;
} }

View File

@@ -23,6 +23,11 @@ namespace YooAsset
if (IsValidWithWarning == false) if (IsValidWithWarning == false)
return; return;
Provider.ReleaseHandle(this); Provider.ReleaseHandle(this);
// 主动卸载零引用的资源包
if (Provider.RefCount == 0)
Provider.TryUnloadBundle();
Provider = null; Provider = null;
} }

View File

@@ -173,6 +173,13 @@ namespace YooAsset
if (Result != null) if (Result != null)
Result.UnloadBundleFile(); Result.UnloadBundleFile();
if (IsDone == false)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Bundle loader destroyed !";
}
} }
/// <summary> /// <summary>
@@ -180,11 +187,7 @@ namespace YooAsset
/// </summary> /// </summary>
public bool CanDestroyLoader() public bool CanDestroyLoader()
{ {
// 注意:正在加载中的任务不可以销毁 if (CanReleasableLoader() == false)
if (_steps == ESteps.LoadBundleFile)
return false;
if (RefCount > 0)
return false; return false;
// YOOASSET_LEGACY_DEPENDENCY // YOOASSET_LEGACY_DEPENDENCY
@@ -194,14 +197,34 @@ namespace YooAsset
{ {
foreach (var bundleID in LoadBundleInfo.Bundle.ReferenceBundleIDs) foreach (var bundleID in LoadBundleInfo.Bundle.ReferenceBundleIDs)
{ {
#if YOOASSET_EXPERIMENTAL
if (_resManager.CheckBundleReleasable(bundleID) == false)
return false;
#else
if (_resManager.CheckBundleDestroyed(bundleID) == false) if (_resManager.CheckBundleDestroyed(bundleID) == false)
return false; return false;
#endif
} }
} }
return true; return true;
} }
/// <summary>
/// 是否可以释放
/// </summary>
public bool CanReleasableLoader()
{
// 注意:正在加载中的任务不可以销毁
if (_steps == ESteps.LoadBundleFile)
return false;
if (RefCount > 0)
return false;
return true;
}
/// <summary> /// <summary>
/// 添加附属的资源提供者 /// 添加附属的资源提供者
/// </summary> /// </summary>
@@ -240,5 +263,28 @@ namespace YooAsset
_removeList.Clear(); _removeList.Clear();
} }
} }
/// <summary>
/// 尝试终止加载器
/// </summary>
public void TryAbortLoader()
{
if (IsDone == false)
{
if (_steps == ESteps.CheckConcurrency)
{
_steps = ESteps.Done;
Status = EOperationStatus.Failed;
Error = "Abort bundle loader !";
}
if (_steps == ESteps.LoadBundleFile)
{
// 注意:终止下载器
if (_loadBundleOp != null)
_loadBundleOp.AbortDownloadFile = true;
}
}
}
} }
} }

View File

@@ -23,7 +23,7 @@ namespace YooAsset
None, None,
CheckOptions, CheckOptions,
ReleaseAll, ReleaseAll,
AbortDownload, TryAbortLoader,
CheckLoading, CheckLoading,
DestroyAll, DestroyAll,
Done, Done,
@@ -78,15 +78,16 @@ namespace YooAsset
} }
} }
_steps = ESteps.AbortDownload; _steps = ESteps.TryAbortLoader;
} }
if (_steps == ESteps.AbortDownload) if (_steps == ESteps.TryAbortLoader)
{ {
// 注意:终止所有载任务 // 尝试终止所有载任务
// 注意正在加载AssetBundle的任务无法终止
foreach (var loader in _resManager.LoaderDic.Values) foreach (var loader in _resManager.LoaderDic.Values)
{ {
loader.AbortOperation(); loader.TryAbortLoader();
} }
_steps = ESteps.CheckLoading; _steps = ESteps.CheckLoading;
} }

View File

@@ -308,6 +308,17 @@ namespace YooAsset
} }
} }
/// <summary>
/// 尝试卸载资源包
/// </summary>
public void TryUnloadBundle()
{
if (_resManager.AutoUnloadBundleWhenUnused)
{
_resManager.TryUnloadUnusedAsset(MainAssetInfo, 10);
}
}
/// <summary> /// <summary>
/// 结束流程 /// 结束流程
/// </summary> /// </summary>

View File

@@ -17,6 +17,7 @@ namespace YooAsset
private int _bundleLoadingMaxConcurrency; private int _bundleLoadingMaxConcurrency;
// 开发者配置选项 // 开发者配置选项
public bool AutoUnloadBundleWhenUnused { private set; get; }
public bool WebGLForceSyncLoadAsset { private set; get; } public bool WebGLForceSyncLoadAsset { private set; get; }
public bool UseWeakReferenceHandle { private set; get; } public bool UseWeakReferenceHandle { private set; get; }
@@ -47,6 +48,7 @@ namespace YooAsset
public void Initialize(InitializeParameters parameters, IBundleQuery bundleServices) public void Initialize(InitializeParameters parameters, IBundleQuery bundleServices)
{ {
_bundleLoadingMaxConcurrency = parameters.BundleLoadingMaxConcurrency; _bundleLoadingMaxConcurrency = parameters.BundleLoadingMaxConcurrency;
AutoUnloadBundleWhenUnused = parameters.AutoUnloadBundleWhenUnused;
WebGLForceSyncLoadAsset = parameters.WebGLForceSyncLoadAsset; WebGLForceSyncLoadAsset = parameters.WebGLForceSyncLoadAsset;
UseWeakReferenceHandle = parameters.UseWeakReferenceHandle; UseWeakReferenceHandle = parameters.UseWeakReferenceHandle;
_bundleQuery = bundleServices; _bundleQuery = bundleServices;
@@ -327,6 +329,14 @@ namespace YooAsset
return true; return true;
return bundleFileLoader.IsDestroyed; return bundleFileLoader.IsDestroyed;
} }
internal bool CheckBundleReleasable(int bundleID)
{
string bundleName = _bundleQuery.GetMainBundleName(bundleID);
var bundleFileLoader = TryGetBundleFileLoader(bundleName);
if (bundleFileLoader == null)
return true;
return bundleFileLoader.CanReleasableLoader();
}
internal bool HasAnyLoader() internal bool HasAnyLoader()
{ {
return LoaderDic.Count > 0; return LoaderDic.Count > 0;

Some files were not shown because too many files have changed in this diff Show More