YooAsset/Assets/YooAsset/CHANGELOG.md

792 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# CHANGELOG
All notable changes to this package will be documented in this file.
## [2.3.4-preview] - 2025-03-08
### Improvements
- YooAsset支持了版本宏定义。
```csharp
YOO_ASSET_2
YOO_ASSET_2_3
YOO_ASSET_2_3_OR_NEWER
```
### Fixed
- (#389) 修复了禁用域重载(Reload Domain)的情况下,再次启动游戏报错的问题。
- (#496) 修复了文件系统参数RESUME_DOWNLOAD_MINMUM_SIZE传入int值会导致异常的错误。
- (#498) 修复了v2.3版本尝试加载安卓包内的原生资源包失败的问题。
### Added
- 新增了YooAssets.GetAllPackages()方法
```csharp
/// <summary>
/// 获取所有资源包裹
/// </summary>
public static List<ResourcePackage> GetAllPackages()
```
## [2.3.3-preview] - 2025-03-06
### Improvements
- 新增了异步操作任务调试器AssetBundleDebugger窗口-->OperationView视图模式
- 编辑器下模拟构建默认启用依赖关系数据库,可以大幅降低编辑器下启动游戏的时间。
- 单元测试用例增加加密解密测试用例。
### Fixed
- (#492) 修复了发布的MAC平台应用在启动的时候提示权限无法获取的问题。
## [2.3.2-preview] - 2025-02-27
### Fixed
- (2.3.1) 修复小游戏平台下载器不生效的问题。
- (#480) 修复了Unity工程打包导出时的报错。
### Added
- 下载器新增参数recursiveDownload
```csharp
/// <summary>
/// 创建资源下载器,用于下载指定的资源依赖的资源包文件
/// </summary>
/// <param name="recursiveDownload">下载资源对象所属资源包内所有资源对象依赖的资源包
public ResourceDownloaderOperation CreateBundleDownloader()
```
- 新增CustomPlayMode模式
```csharp
/// <summary>
/// 自定义运行模式的初始化参数
/// </summary>
public class CustomPlayModeParameters : InitializeParameters
{
/// <summary>
/// 文件系统初始化参数列表
/// 注意:列表最后一个元素作为主文件系统!
/// </summary>
public List<FileSystemParameters> 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
{
/// <summary>
/// 设置异步系统参数,快速启动模式的开关
/// 注意:该模式默认开启
/// </summary>
public static void SetOperationSystemQuickStartMode(bool state)
}
```
- 新增打包构建参数
```csharp
public class BuildParameters
{
/// <summary>
/// 旧版依赖模式
/// 说明兼容YooAssets1.5.x版本
/// </summary>
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
{
/// <summary>
/// 释放所有资源句柄,防止卸载过程中触发完成回调!
/// </summary>
public bool ReleaseAllHandles = true;
/// <summary>
/// 卸载过程中锁定加载操作,防止新的任务请求!
/// </summary>
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
/// <summary>
/// 对单独引用的共享资源进行独立打包
/// 说明:关闭该选项单独引用的共享资源将会构建到引用它的资源包内!
/// </summary>
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
- (#438) 修复了纯血鸿蒙加载本地文件失败的问题。
- (#445) 修复了小游戏扩展文件系统脚本编译错误。
### Changed
- EditorSimulateModeHelper.SimulateBuild()方法变更
```csharp
public static PackageInvokeBuildResult SimulateBuild(string packageName);
```
## [2.2.8-preview] - 2025-01-03
新增了单元测试用例。
### Improvements
- EditorSimulateModeHelper.SimulateBuild()方法提供指定自定义构建类
```csharp
public class EditorSimulateBuildParam
{
/// <summary>
/// 模拟构建类所属程序集名称
/// </summary>
public string InvokeAssmeblyName = "YooAsset.Editor";
/// <summary>
/// 模拟构建执行的类名全称
/// 注意:类名必须包含命名空间!
/// </summary>
public string InvokeClassFullName = "YooAsset.Editor.AssetBundleSimulateBuilder";
/// <summary>
/// 模拟构建执行的方法名称
/// 注意:执行方法必须满足 BindingFlags.Public | BindingFlags.Static
/// </summary>
public string InvokeMethodName = "SimulateBuild";
}
```
- 文件清理方式新增清理缓存清单。
```csharp
/// <summary>
/// 文件清理方式
/// </summary>
public enum EFileClearMode
{
/// <summary>
/// 清理所有清单
/// </summary>
ClearAllManifestFiles,
/// <summary>
/// 清理未在使用的清单
/// </summary>
ClearUnusedManifestFiles,
}
```
### Fixed
- (#426) 修复了鸿蒙next平台加载内置文件路径报错的问题。
- (#428) 修复了鸿蒙next平台加载内置文件路径报错的问题。
- (#434) 修复了2.2版本 catalog文件对Json格式原生文件不记录的问题。
- (#435) 修复了WebGL平台调用MD5算法触发异常的问题。
### Added
- 新增了视频打包规则。
```csharp
/// <summary>
/// 打包视频文件
/// </summary>
[DisplayName("打包视频文件")]
public class PackVideoFile : IPackRule
```
### Changed
- 重命名FileSystemParameters.RootDirectory字段为PackageRoot
- 重命名ResourcePackage.ClearCacheBundleFilesAsync()方法为ClearCacheFilesAsync()
## [2.2.7-preview] - 2024-12-30
### Improvements
- 重构了下载器的委托方法。
- YooAssetSettings配置文件新增Package Manifest Prefix参数。
```csharp
/// <summary>
/// 资源清单前缀名称(默认为空)
/// </summary>
public string PackageManifestPrefix = string.Empty;
```
### Fixed
- (#422) 修复了同步加载场景的NotImplementedException异常报错。
- (#418) 修复了web远程文件系统初始化不正确的问题
- (#392) 修复了引擎版本代码兼容相关的警告。
- (#332) 修复了当用户的设备中有特殊字符时URL路径无法被正确识别的问题。
### Added
- 新增代码字段AsyncOperationBase.PackageName
### Changed
- 重命名DownloaderOperation.OnDownloadOver()方法为DownloaderFinish()
- 重命名DownloaderOperation.OnDownloadProgress()方法为DownloadUpdate()
- 重命名DownloaderOperation.OnDownloadError()方法为DownloadError()
- 重命名DownloaderOperation.OnStartDownloadFile()方法为DownloadFileBegin()
## [2.2.6-preview] - 2024-12-27
### Improvements
- 增强了对Steam平台DLC拓展包的支持。
```csharp
// 新增参数关闭Catalog目录查询内置文件的功能
var fileSystemParams = CreateDefaultBuildinFileSystemParameters();
fileSystemParams .AddParameter(FileSystemParametersDefine.DISABLE_CATALOG_FILE, true);
```
- 资源句柄基类提供了统一的Release方法。
```csharp
public abstract class HandleBase : IEnumerator, IDisposable
{
/// <summary>
/// 释放资源句柄
/// </summary>
public void Release();
/// <summary>
/// 释放资源句柄
/// </summary>
public void Dispose();
}
```
- 优化了场景卸载逻辑。
```csharp
//框架内不在区分主场景和附加场景。
//场景卸载后自动释放资源句柄。
```
### Fixed
- 修复了Unity2020版本提示的脚本编译错误。
- (#417) 修复了DefaultWebServerFileSystem文件系统内Catalog未起效的问题。
### Added
- 新增示例文件 GetCacheBundleSizeOperation.cs
可以获取指定Package的缓存资源总大小。
### Removed
- 移除了SceneHandle.IsMainScene()方法。
## [2.2.5-preview] - 2024-12-25
依赖的ScriptableBuildPipeline (SBP) 插件库版本切换为1.21.25版本!
重构了ResourceManager相关的核心代码方便借助文件系统扩展和支持更复杂的需求
### Editor
- 新增了编辑器模拟构建管线 EditorSimulateBuildPipeline
- 移除了EBuildMode枚举类型构建界面有变动。
- IActiveRule分组激活接口新增GroupData类。
### Improvements
- 增加抖音小游戏文件系统,见扩展示例代码。
- 微信小游戏文件系统支持删除无用缓存文件和全部缓存文件。
- 资源构建管线现在默认剔除了Gizmos和编辑器资源。
- 优化了资源构建管线里资源收集速度。
资源收集速度提升100倍
```csharp
class BuildParameters
{
/// <summary>
/// 使用资源依赖缓存数据库
/// 说明:开启此项可以极大提高资源收集速度
/// </summary>
public bool UseAssetDependencyDB = false;
}
```
- WebPlayMode支持跨域加载。
```csharp
// 创建默认的WebServer文件系统参数
public static FileSystemParameters CreateDefaultWebServerFileSystemParameters(bool disableUnityWebCache = false)
// 创建默认的WebRemote文件系统参数支持跨域加载
public static FileSystemParameters CreateDefaultWebRemoteFileSystemParameters(IRemoteServices remoteServices, bool disableUnityWebCache = false)
```
- 编辑器模拟文件系统新增初始化参数:支持异步模拟加载帧数。
```csharp
/// <summary>
/// 异步模拟加载最小帧数
/// </summary>
FileSystemParametersDefine.ASYNC_SIMULATE_MIN_FRAME
/// <summary>
/// 异步模拟加载最大帧数
/// </summary>
FileSystemParametersDefine.ASYNC_SIMULATE_MAX_FRAME
```
- 缓存文件系统新增初始化参数:支持设置下载器最大并发连接数和单帧最大请求数
```csharp
var fileSystremParams = FileSystemParameters.CreateDefaultCacheFileSystemParameters();
fileSystremParams .AddParameter(FileSystemParametersDefine.DOWNLOAD_MAX_CONCURRENCY, 99);
fileSystremParams .AddParameter(FileSystemParametersDefine.DOWNLOAD_MAX_REQUEST_PER_FRAME, 10);
```
### Fixed
- (#349) 修复了在加载清单的时候,即使本地存在缓存文件还会去远端下载。
- (#361) 修复了协程里等待的asset handle被release会无限等待并输出警告信息。
- (#359) 修复了SubAssetsHandle.GetSubAssetObject会获取到同名的主资源。
- (#387) 修复了加密后文件哈希冲突的时候没有抛出异常错误。
- (#404) 修复了Unity2022.3.8版本提示编译错误Cannot resolve symbol 'AsyncInstantiateOperation'
### Added
- 新增示例文件 CopyBuildinManifestOperation.cs
- 新增示例文件 LoadGameObjectOperation.cs
- 新增了获取配置清单详情的方法
```csharp
class ResourcePackage
{
public PackageDetails GetPackageDetails()
}
```
- 新增了获取所有资源信息的方法
```csharp
class ResourcePackage
{
public AssetInfo[] GetAllAssetInfos()
}
```
- 新增了清理缓存文件的通用方法
```csharp
/// <summary>
/// 文件清理方式
/// </summary>
public enum EFileClearMode
{
/// <summary>
/// 清理所有文件
/// </summary>
ClearAllBundleFiles = 1,
/// <summary>
/// 清理未在使用的文件
/// </summary>
ClearUnusedBundleFiles = 2,
/// <summary>
/// 清理指定标签的文件
/// 说明需要指定参数可选string, string[], List<string>
/// </summary>
ClearBundleFilesByTags = 3,
}
class ResourcePackage
{
/// <summary>
/// 清理缓存文件
/// </summary>
/// <param name="clearMode">清理方式</param>
/// <param name="clearParam">执行参数</param>
public ClearCacheBundleFilesOperation ClearCacheBundleFilesAsync(EFileClearMode clearMode, object clearParam = null)
}
```
### Changed
- 修改了EditorSimulateModeHelper.SimulateBuild()方法
- 重命名ResourcePackage.GetAssetsInfoByTags()方法为GetAssetInfosByTags()
- 实例化对象方法增加激活参数。
```csharp
public InstantiateOperation InstantiateAsync(bool actived = true)
```
- 清单文件的版本提升到2.2.5版本
```csharp
/// <summary>
/// 资源包裹的备注信息
/// </summary>
public string PackageNote;
```
### Removed
- 移除了HostPlayModeParameters.DeliveryFileSystemParameters字段
- 移除了ResourcePackage.ClearAllBundleFilesAsync()方法
- 移除了ResourcePackage.ClearUnusedBundleFilesAsync()方法
- 移除了FileSystemParameters.CreateDefaultBuildinRawFileSystemParameters()方法
- 移除了FileSystemParameters.CreateDefaultCacheRawFileSystemParameters()方法
- 移除了枚举类型EDefaultBuildPipeline
- 移除了配置参数YooAssetSettings.ManifestFileName
## [2.2.4-preview] - 2024-08-15
### Fixed
- 修复了HostPlayMode初始化卡死的问题。
## [2.2.3-preview] - 2024-08-13
### Fixed
- (#311) 修复了断点续传下载器极小概率报错 : “416 Range Not Satisfiable”
### Improvements
- 原生文件构建管线支持原生文件加密。
- HostPlayMode模式下内置文件系统初始化参数可以为空。
- 场景加载增加了LocalPhysicsMode参数来控制物理运行模式。
- 默认的内置文件系统和缓存文件系统增加解密方法。
```csharp
/// <summary>
/// 创建默认的内置文件系统参数
/// </summary>
/// <param name="decryptionServices">加密文件解密服务类</param>
/// <param name="verifyLevel">缓存文件的校验等级</param>
/// <param name="rootDirectory">内置文件的根路径</param>
public static FileSystemParameters CreateDefaultBuildinFileSystemParameters(IDecryptionServices decryptionServices, EFileVerifyLevel verifyLevel, string rootDirectory);
/// <summary>
/// 创建默认的缓存文件系统参数
/// </summary>
/// <param name="remoteServices">远端资源地址查询服务类</param>
/// <param name="decryptionServices">加密文件解密服务类</param>
/// <param name="verifyLevel">缓存文件的校验等级</param>
/// <param name="rootDirectory">文件系统的根目录</param>
public static FileSystemParameters CreateDefaultCacheFileSystemParameters(IRemoteServices remoteServices, IDecryptionServices decryptionServices, EFileVerifyLevel verifyLevel, string rootDirectory);
```
## [2.2.2-preview] - 2024-07-31
### Fixed
- (#321) 修复了在Unity2022里编辑器下离线模式运行失败的问题。
- (#325) 修复了在Unity2019里编译报错问题。
## [2.2.1-preview] - 2024-07-10
统一了所有PlayMode的初始化逻辑EditorSimulateMode和OfflinePlayMode初始化不再主动加载资源清单
### Added
- 新增了IFileSystem.ReadFileData方法支持原生文件自定义获取文本和二进制数据。
### Improvements
- 优化了DefaultWebFileSystem和DefaultBuildFileSystem文件系统的内部初始化逻辑。
## [2.2.0-preview] - 2024-07-07
重构了运行时代码新增了文件系统接口IFileSystem方便开发者扩展特殊需求。
新增微信小游戏文件系统示例代码详细见Extension Sample/Runtime/WechatFileSystem
### Added
- 新增了ResourcePackage.DestroyAsync方法
- 新增了FileSystemParameters类帮助初始化文件系统
内置了编辑器文件系统参数内置文件系统参数缓存文件系统参数Web文件系统参数。
```csharp
public class FileSystemParameters
{
/// <summary>
/// 文件系统类
/// </summary>
public string FileSystemClass { private set; get; }
/// <summary>
/// 文件系统的根目录
/// </summary>
public string RootDirectory { private set; get; }
/// <summary>
/// 添加自定义参数
/// </summary>
public void AddParameter(string name, object value)
}
```
### Changed
- 重构了InitializeParameters初始化参数
- 重命名YooAssets.DestroyPackage方法为RemovePackage
- 重命名ResourcePackage.UpdatePackageVersionAsync方法为RequestPackageVersionAsync
- 重命名ResourcePackage.UnloadUnusedAssets方法为UnloadUnusedAssetsAsync
- 重命名ResourcePackage.ForceUnloadAllAssets方法为UnloadAllAssetsAsync
- 重命名ResourcePackage.ClearUnusedCacheFilesAsync方法为ClearUnusedBundleFilesAsync
- 重命名ResourcePackage.ClearAllCacheFilesAsync方法为ClearAllBundleFilesAsync
### Removed
- 移除了YooAssets.Destroy方法
- 移除了YooAssets.SetDownloadSystemClearFileResponseCode方法
- 移除了YooAssets.SetCacheSystemDisableCacheOnWebGL方法
- 移除了ResourcePackage.GetPackageBuildinRootDirectory方法
- 移除了ResourcePackage.GetPackageSandboxRootDirectory方法
- 移除了ResourcePackage.ClearPackageSandbox方法
- 移除了IBuildinQueryServices接口
- 移除了IDeliveryLoadServices接口
- 移除了IDeliveryQueryServices接口
## [2.1.2] - 2024-05-16
SBP库依赖版本升级至2.1.3
### Fixed
- (#236) 修复了资源配置界面AutoCollectShader复选框没有刷新的问题。
- (#244) 修复了导入器在安卓平台导入本地下载的资源失败的问题。
- (#268) 修复了挂起场景未解除状态前无法卸载的问题。
- (#269) 优化场景挂起流程,支持中途取消挂起操作。
- (#276) 修复了HostPlayMode模式下如果内置清单是最新版本每次运行都会触发拷贝行为。
- (#289) 修复了Unity2019版本脚本IWebRequester编译报错。
- (#295) 解决了在安卓移动平台,华为和三星真机上有极小概率加载资源包失败 : Unable to open archive file
### Added
- 新增GetAllCacheFileInfosOperation()获取缓存文件信息的方法。
- 新增LoadSceneSync()同步加载场景的方法。
- 新增IIgnoreRule接口资源收集流程可以自定义。
- 新增IWechatQueryServices接口用于微信平台本地文件查询。
后续将会通过虚拟文件系统来支持!
### Changed
- 调整了UnloadSceneOperation代码里场景的卸载顺序。
### Improvements
- 优化了资源清单的解析过程。
- 移除资源包名里的空格字符。
- 支持华为鸿蒙系统。
## [2.1.1] - 2024-01-17
### Fixed
- (#224) 修复了编辑器模式打包时 SimulateBuild 报错的问题。
- (#223) 修复了资源构建界面读取配置导致的报错问题。
### Added
- 支持共享资源打包规则,可以定制化独立的构建规则。
```c#
public class BuildParameters
{
/// <summary>
/// 是否启用共享资源打包
/// </summary>
public bool EnableSharePackRule = false;
}
```
- 微信小游戏平台,资源下载器支持底层缓存查询。
## [2.1.0] - 2023-12-27
升级了 Scriptable build pipeline (SBP) 的版本,来解决图集引用的精灵图片冗余问题。
### Fixed
- (#195) 修复了在EditorPlayMode模式下AssetHandle.GetDownloadStatus()发生异常的问题。
- (#201) 修复了断点续传失效的问题。
- (#202) 修复了打包参数FileNameStyle设置为BundleName后IQueryServices会一直返回true的问题。
- (#205) 修复了HybridCLR插件里创建资源下载器触发的异常。
- (#210) 修复了DownloaderOperation在未开始下载前内部的PackageName为空的问题。
- (#220) 修复了资源收集界面关闭后,撤回操作还会生效的问题。
- 修复了下载器合并后重新计算下载字节数不正确的问题。
### Improvements
- (#198) 资源收集界面禁用的分组不再检测合法性。
- (#203) 资源构建类容许自定义打包的输出目录。
- 资源构建报告增加未依赖的资源信息列表。
### Changed
- IBuildinQueryServices和IDeliveryQueryServices查询方法变更。
```c#
public interface IBuildinQueryServices
{
/// <summary>
/// 查询是否为应用程序内置的资源文件
/// </summary>
/// <param name="packageName">包裹名称</param>
/// <param name="fileName">文件名称(包含文件的后缀格式)</param>
/// <param name="fileCRC">文件哈希值</param>
/// <returns>返回查询结果</returns>
bool Query(string packageName, string fileName, string fileCRC);
}
public interface IDeliveryQueryServices
{
/// <summary>
/// 查询是否为开发者分发的资源文件
/// </summary>
/// <param name="packageName">包裹名称</param>
/// <param name="fileName">文件名称(包含文件的后缀格式)</param>
/// <param name="fileCRC">文件哈希值</param>
/// <returns>返回查询结果</returns>
bool Query(string packageName, string fileName, string fileCRC);
}
```
### Removed
- (#212) 移除了构建报告里的资源冗余信息列表。