diff --git a/CHANGELOG.md b/CHANGELOG.md index c4c0765..ea318b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,183 @@ All notable changes to this package will be documented in this file. +## [2.3.2-preview] - 2025-02-27 + +### Fixed + +- (2.3.1) 修复小游戏平台下载器不生效的问题。 +- (#480) 修复了Unity工程打包导出时的报错。 + +### Added + +- 下载器新增参数:recursiveDownload + + ```csharp + /// + /// 创建资源下载器,用于下载指定的资源依赖的资源包文件 + /// + /// 下载资源对象所属资源包内所有资源对象依赖的资源包 + public ResourceDownloaderOperation CreateBundleDownloader() + ``` + +- 新增CustomPlayMode模式 + + ```csharp + /// + /// 自定义运行模式的初始化参数 + /// + public class CustomPlayModeParameters : InitializeParameters + { + /// + /// 文件系统初始化参数列表 + /// 注意:列表最后一个元素作为主文件系统! + /// + public List FileSystemParameterList; + } + ``` + +## [2.3.1-preview] - 2025-02-25 + +**资源加载依赖计算方式还原为了1.5x版本的模式,只加载资源对象实际依赖的资源包,不再以资源对象所在资源包的依赖关系为加载标准**。 + +### Improvements + +- 优化OperationSystem的更新机制,异步加载的耗时降低了50%。 +- 优化了Debugger窗口的显示页面,BundleView页面增加资源包的引用列表。 +- 优化了Reporter窗口的显示页面。 + +### Fixed + +- 修复了怀旧依赖模式下,TAG传染不正确的问题。 + +## [2.3.0-preview] - 2025-02-19 + +### Improvements + +资源收集窗口列表元素支持手动上下拖拽排序! + +资源扫描窗口列表元素支持手动上下拖拽排序! + +### Added + +- 新增了UIElements扩展类ReorderableListView + +- 新增初始化方法 + + ```csharp + public class YooAssets + { + /// + /// 设置异步系统参数,快速启动模式的开关 + /// 注意:该模式默认开启 + /// + public static void SetOperationSystemQuickStartMode(bool state) + } + ``` + +- 新增打包构建参数 + + ```csharp + public class BuildParameters + { + /// + /// 旧版依赖模式 + /// 说明:兼容YooAssets1.5.x版本 + /// + public bool LegacyDependency = false; + } + ``` + +### Fixed + +- (#472) 修复了Unity6平台,TableView视图无法显示问题。 +- 修复了微信小游戏和抖音小游戏未正确使用插件的卸载方法。 + +## [2.2.12] - 2025-02-14 + +### Improvements + +- WebGL网页平台支持文件加密。 +- 微信小游戏平台支持文件加密。 +- 抖音小游戏平台支持文件加密。 + +### Fixed + +- (#466) 修复了微信小游戏文件系统查询机制不生效! +- (#341) 修复了微信小游戏的下载进度异常问题。 +- (#471) 修复了Unity2019,Unity2020平台上,TableView视图无法显示的问题。 + +### Added + +- 新增了ResourcePackage.UnloadAllAssetsAsync(UnloadAllAssetsOptions options)方法 + + ```csharp + public sealed class UnloadAllAssetsOptions + { + /// + /// 释放所有资源句柄,防止卸载过程中触发完成回调! + /// + public bool ReleaseAllHandles = true; + + /// + /// 卸载过程中锁定加载操作,防止新的任务请求! + /// + public bool LockLoadOperation = true; + } + ``` + +## [2.2.11] - 2025-02-10 + +### Improvements + +- AssetArtScanner配置和生成报告的容错性检测。 + +### Fixed + +- (#465) 修复了特殊情况下,没有配置资源包文件后缀名构建失败的问题。 +- (#468) 修复了安卓平台二次启动加载原生文件或加密文件失败的问题。 + +## [2.2.10] - 2025-02-08 + +### Improvements + +- 新增了可扩展的AssetArtScanner资源扫描工具,详细请见官方说明文档。 +- 优化了AssetBundleReporter页面。 +- 优化了AssetBundleDebugger页面。 +- 优化了微信小游戏文件系统的缓存查询机制。 +- 优化了抖音小游戏文件系统的缓存查询机制。 + +### Fixed + +- (#447) 修复了Unity2019平台代码编译错误问题。 +- (#456) 修复了在Package未激活有效清单之前,无法销毁的问题。 +- (#452) 修复了内置文件系统类NeedPack方法总是返回TRUE的问题。 +- (#424) 适配了Unity6000版本替换了过时方法。 + +### Added + +- 新增了SBP构建管线构建参数:BuiltinShadersBundleName + +- 新增了SBP构建管线构建参数:MonoScriptsBundleName + +- 新增了全局构建管线构建参数:SingleReferencedPackAlone + + ```csharp + /// + /// 对单独引用的共享资源进行独立打包 + /// 说明:关闭该选项单独引用的共享资源将会构建到引用它的资源包内! + /// + public bool SingleReferencedPackAlone = true; + ``` + +- 新增了内置文件系统初始化参数:COPY_BUILDIN_PACKAGE_MANIFEST + + ```csharp + // 内置文件系统初始化的时候,自动拷贝内置清单到沙盒目录。 + var systemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(); + systemParameters.AddParameter(FileSystemParametersDefine.COPY_BUILDIN_PACKAGE_MANIFEST, true); + ``` + ## [2.2.9] - 2025-01-14 ### Fixed diff --git a/Editor/AssetArtReporter.meta b/Editor/AssetArtReporter.meta new file mode 100644 index 0000000..152a582 --- /dev/null +++ b/Editor/AssetArtReporter.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bdbb4647038dcc842802f546c2fedc83 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/AssetArtReporter/AssetArtReporterWindow.cs b/Editor/AssetArtReporter/AssetArtReporterWindow.cs new file mode 100644 index 0000000..728fb2e --- /dev/null +++ b/Editor/AssetArtReporter/AssetArtReporterWindow.cs @@ -0,0 +1,624 @@ +#if UNITY_2019_4_OR_NEWER +using System; +using System.IO; +using System.Linq; +using System.Collections.Generic; +using UnityEditor; +using UnityEngine; +using UnityEditor.UIElements; +using UnityEngine.UIElements; + +namespace YooAsset.Editor +{ + public class AssetArtReporterWindow : EditorWindow + { + [MenuItem("YooAsset/AssetArt Reporter", false, 302)] + public static AssetArtReporterWindow OpenWindow() + { + AssetArtReporterWindow window = GetWindow("AssetArt Reporter", true, WindowsDefine.DockedWindowTypes); + window.minSize = new Vector2(800, 600); + return window; + } + + private class ElementTableData : DefaultTableData + { + public ReportElement Element; + } + private class PassesBtnCell : ITableCell, IComparable + { + public object CellValue { set; get; } + public string SearchTag { private set; get; } + public ReportElement Element + { + get + { + return (ReportElement)CellValue; + } + } + + public PassesBtnCell(string searchTag, ReportElement element) + { + SearchTag = searchTag; + CellValue = element; + } + public object GetDisplayObject() + { + return string.Empty; + } + public int CompareTo(object other) + { + if (other is PassesBtnCell cell) + { + return this.Element.Passes.CompareTo(cell.Element.Passes); + } + else + { + return 0; + } + } + } + private class WhiteListBtnCell : ITableCell, IComparable + { + public object CellValue { set; get; } + public string SearchTag { private set; get; } + public ReportElement Element + { + get + { + return (ReportElement)CellValue; + } + } + + public WhiteListBtnCell(string searchTag, ReportElement element) + { + SearchTag = searchTag; + CellValue = element; + } + public object GetDisplayObject() + { + return string.Empty; + } + public int CompareTo(object other) + { + if (other is WhiteListBtnCell cell) + { + return this.Element.IsWhiteList.CompareTo(cell.Element.IsWhiteList); + } + else + { + return 0; + } + } + } + + private ToolbarSearchField _searchField; + private Button _showHiddenBtn; + private Button _whiteListVisibleBtn; + private Button _passesVisibleBtn; + private Label _titleLabel; + private Label _descLabel; + private TableView _elementTableView; + + private ScanReportCombiner _reportCombiner; + private string _lastestOpenFolder; + private List _sourceDatas; + private bool _elementVisibleState = true; + private bool _whiteListVisibleState = true; + private bool _passesVisibleState = true; + + public void CreateGUI() + { + try + { + VisualElement root = this.rootVisualElement; + + // 加载布局文件 + var visualAsset = UxmlLoader.LoadWindowUXML(); + if (visualAsset == null) + return; + + visualAsset.CloneTree(root); + + // 导入按钮 + var importSingleBtn = root.Q