All notable changes to this package will be documented in this file.
新增了HostPlayModeParameters.RemoteServices字段
/// <summary>
/// 远端资源地址查询服务类
/// </summary>
public IRemoteServices RemoteServices = null;
该版本重构了Persistent类,导致沙盒目录和内置目录的存储结构发生了变化。
该版本支持按照Package自定义沙盒存储目录和内置存储目录。
注意:低版本升级用户,请使用Space Shooter目录下的StreamingAssetsHelper插件覆盖到本地工程!
新增了YooAssets.SetCacheSystemDisableCacheOnWebGL()方法
/// <summary>
/// 设置缓存系统参数,禁用缓存在WebGL平台
/// </summary>
public static void SetCacheSystemDisableCacheOnWebGL()
新增了YooAssets.SetDownloadSystemRedirectLimit()方法
/// <summary>
/// 设置下载系统参数,网络重定向次数(Unity引擎默认值32)
/// 注意:不支持设置为负值
/// </summary>
public static void SetDownloadSystemRedirectLimit(int redirectLimit)
新增了构建流程可扩展的方法。
public class AssetBundleBuilder
{
/// <summary>
/// 构建资源包
/// </summary>
public BuildResult Run(BuildParameters buildParameters, List<IBuildTask> buildPipeline)
}
新增了BuildParameters.StreamingAssetsRoot字段
public class BuildParameters
{
/// <summary>
/// 内置资源的根目录
/// </summary>
public string StreamingAssetsRoot;
}
新增了InitializeParameters.BuildinRootDirectory字段
/// <summary>
/// 内置文件的根路径
/// 注意:当参数为空的时候会使用默认的根目录。
/// </summary>
public string BuildinRootDirectory = string.Empty;
新增了InitializeParameters.SandboxRootDirectory字段
/// <summary>
/// 沙盒文件的根路径
/// 注意:当参数为空的时候会使用默认的根目录。
/// </summary>
public string SandboxRootDirectory = string.Empty;
新增了ResourcePackage.GetPackageBuildinRootDirectory()方法
/// <summary>
/// 获取包裹的内置文件根路径
/// </summary>
public string GetPackageBuildinRootDirectory()
新增了ResourcePackage.GetPackageSandboxRootDirectory()方法
/// <summary>
/// 获取包裹的沙盒文件根路径
/// </summary>
public string GetPackageSandboxRootDirectory()
新增了ResourcePackage.ClearPackageSandbox()方法
/// <summary>
/// 清空包裹的沙盒目录
/// </summary>
public void ClearPackageSandbox()
优化了缓存的信息文件写入方式
离线模式支持内置资源解压到沙盒
资源包构建流程任务节点支持可扩展
using YooAsset.Editor
[TaskAttribute(ETaskPipeline.AllPipeline, 100, "自定义任务节点")]
public class CustomTask : IBuildTask
资源收集界面增加了LocationToLower选项
资源收集界面增加了IncludeAssetGUID选项
IShareAssetPackRule 重命名为 ISharedPackRule
新增了ResourcePackage.LoadAllAssetsAsync方法
/// <summary>
/// 异步加载资源包内所有资源对象
/// </summary>
/// <param name="assetInfo">资源信息</param>
public AllAssetsOperationHandle LoadAllAssetsAsync(AssetInfo assetInfo)
新增了ResourcePackage.GetAssetInfoByGUID()方法
/// <summary>
/// 获取资源信息
/// </summary>
/// <param name="assetGUID">资源GUID</param>
public AssetInfo GetAssetInfoByGUID(string assetGUID)
新增了场景加载参数suspendLoad
/// <summary>
/// 异步加载场景
/// </summary>
/// <param name="location">场景的定位地址</param>
/// <param name="sceneMode">场景加载模式</param>
/// <param name="suspendLoad">场景加载到90%自动挂起</param>
/// <param name="priority">优先级</param>
public SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool suspendLoad = false, int priority = 100)
Extension Sample 增加了GameObjectAssetReference示例脚本
新增加了ZeroRedundancySharedPackRule类(零冗余的共享资源打包规则)
新增加了FullRedundancySharedPackRule类(全部冗余的共享资源打包规则)
增加了自动分析冗余资源的开关
/// <summary>
/// 构建参数
/// </summary>
public class BuildParameters
{
/// <summary>
/// 自动分析冗余资源
/// </summary>
public bool AutoAnalyzeRedundancy = true;
}
太空战机DEMO启用了新的内置资源查询机制。
新增方法ResoucePackage.ClearAllCacheFilesAsync()
public class ResoucePackage
{
/// <summary>
/// 清理包裹本地所有的缓存文件
/// </summary>
public ClearAllCacheFilesOperation ClearAllCacheFilesAsync();
}
新增方法YooAssets.SetCacheSystemSandboxPath()
public class YooAssets
{
/// <summary>
/// 设置缓存系统参数,沙盒目录的存储路径
/// </summary>
public static void SetCacheSystemSandboxPath(string sandboxPath);
}
增加了对WEBGL平台加密选项的检测。
增加了YooAsset/Home Page菜单栏。
增加了鼠标右键创建配置的菜单。
增加了YooAssets.DestroyPackage()方法。
class YooAssets
{
/// <summary>
/// 销毁资源包
/// </summary>
/// <param name="package">资源包对象</param>
public static void DestroyPackage(string packageName);
}
UpdatePackageManifestAsync方法增加了新参数autoSaveVersion
class ResourcePackage
{
/// <summary>
/// 向网络端请求并更新清单
/// </summary>
/// <param name="packageVersion">更新的包裹版本</param>
/// <param name="autoSaveVersion">更新成功后自动保存版本号,作为下次初始化的版本。</param>
/// <param name="timeout">超时时间(默认值:60秒)</param>
public UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, bool autoSaveVersion = true, int timeout = 60)
}
BuildParameters类增加了新字段。
可以自定义共享资源文件的打包规则。
class BuildParameters
{
/// <summary>
/// 共享资源的打包规则
/// </summary>
public IShareAssetPackRule ShareAssetPackRule = null;
}
增加了扩展属性
[assembly: InternalsVisibleTo("YooAsset.EditorExtension")]
[assembly: InternalsVisibleTo("YooAsset.RuntimeExtension")]
优化了资源配置导入逻辑,增加了对XML配置文件的合法性检测。
优化了UniTask的说明文档。
调整构建的输出目录结构。
调试窗口增加分屏功能。(Unity2020.3+起效)
报告窗口增加分屏功能。(Unity2020.3+起效)
编辑器模拟模式支持了虚拟资源包。
扩展了Instantiate方法。
public sealed class AssetOperationHandle
{
public GameObject InstantiateSync();
public GameObject InstantiateSync(Transform parent);
public GameObject InstantiateSync(Transform parent, bool worldPositionStays);
public GameObject InstantiateSync(Vector3 position, Quaternion rotation);
public GameObject InstantiateSync(Vector3 position, Quaternion rotation, Transform parent);
}
优化了报告文件内容,增加了资源包内嵌的资源列表。
可寻址规则增加了AddressByFilePath类。
新增了新方法。
/// <summary>
/// 向远端请求并更新清单
/// </summary>
public class UpdatePackageManifestOperation : AsyncOperationBase
{
/// <summary>
/// 保存当前清单的版本,用于下次启动时自动加载的版本。
/// </summary>
public void SavePackageVersion();
}
新增了初始化参数。
/// <summary>
/// 下载失败尝试次数
/// 注意:默认值为MaxValue
/// </summary>
public int DownloadFailedTryAgain = int.MaxValue;
新增了初始化参数。
/// <summary>
/// 资源加载每帧处理的最大时间片段
/// 注意:默认值为MaxValue
/// </summary>
public long LoadingMaxTimeSlice = long.MaxValue;
移除了代码里的Patch敏感字。
//PatchManifest.cs重命名为PackageManifest.cs
//AssetsPackage.cs重命名为ResourcePackage.cs
//YooAssets.CreateAssetsPackage()重命名为YooAssets.CreatePackage()
//YooAssets.GetAssetsPackage()重命名为YooAssets.GetPackage()
//YooAssets.TryGetAssetsPackage()重命名为YooAssets.TryGetPackage()
//YooAssets.HasAssetsPackage()重命名为YooAssets.HasPackage()
移除了初始化参数:AssetLoadingMaxNumber
优化了打包逻辑,提高构建速度。
支持自定义日志处理,方便收集线上问题。
public class YooAssets
{
/// <summary>
/// 初始化资源系统
/// </summary>
/// <param name="logger">自定义日志处理</param>
public static void Initialize(ILogger logger = null)
}
支持自定义下载请求
/// <summary>
/// 设置下载系统参数,自定义下载请求
/// </summary>
public static void SetDownloadSystemUnityWebRequest(DownloadRequestDelegate requestDelegate)
优化了打包时资源包引用关系计算的逻辑。
优化了缓存系统初始化逻辑,支持分帧获取所有缓存文件。
优化了缓存系统的存储目录结构,提高了文件夹查询速度。
优化了在资源收集界面,点击查看Collector主资源列表卡顿问题。
优化了资源对象加载耗时统计的逻辑,现在更加准确了。
优化了资源加载器查询逻辑。
优化了资源下载系统,下载文件的验证支持了多线程。
着色器变种收集界面增加单次照射数量的控制。
EVerifyLevel新增Middle级别。
public enum EVerifyLevel
{
/// <summary>
/// 验证文件存在
/// </summary>
Low,
/// <summary>
/// 验证文件大小
/// </summary>
Middle,
/// <summary>
/// 验证文件大小和CRC
/// </summary>
High,
}
补丁清单的资源包列表新增引用链。
(解决复杂依赖关系下,错误卸载资源包的问题)
(解决原生文件没有后缀格式的问题)
接口变更:IPackRule
/// <summary>
/// 资源打包规则接口
/// </summary>
public interface IPackRule
{
/// <summary>
/// 获取打包规则结果
/// </summary>
PackRuleResult GetPackRuleResult(PackRuleData data);
/// <summary>
/// 是否为原生文件打包规则
/// </summary>
bool IsRawFilePackRule();
}
全新的缓存系统!
新增了AssetsPackage.PreDownloadPackageAsync()方法
/// <summary>
/// 预下载指定版本的包裹资源
/// </summary>
/// <param name="packageVersion">下载的包裹版本</param>
/// <param name="timeout">超时时间(默认值:60秒)</param>
public PreDownloadPackageOperation PreDownloadPackageAsync(string packageVersion, int timeout = 60)
新增了OperationHandleBase.GetDownloadReport()方法
/// <summary>
/// 获取下载报告
/// </summary>
public DownloadReport GetDownloadReport();
全新的太空战机Demo !
新增了YooAssets.Destroy()资源系统销毁方法。
/// <summary>
/// 销毁资源系统
/// </summary>
public static void Destroy();
新增了方法AssetsPackage.ClearPackageUnusedCacheFilesAsync()
/// <summary>
/// 清理本地包裹未使用的缓存文件
/// </summary>
public ClearPackageUnusedCacheFilesOperation ClearPackageUnusedCacheFilesAsync()
新增了方法AssetsPackage.LoadRawFileAsync()
/// <summary>
/// 异步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileAsync(string location)
新增了方法AssetsPackage.LoadRawFileSync()
/// <summary>
/// 同步加载原生文件
/// </summary>
/// <param name="location">资源的定位地址</param>
public RawFileOperationHandle LoadRawFileSync(string location)
新增了AssetsPackage.CheckPackageContentsAsync()方法
/// <summary>
/// 检查本地包裹内容的完整性
/// </summary>
public CheckPackageContentsOperation CheckPackageContentsAsync()
优化了HostPlayMode的初始化逻辑,优先读取沙盒内的清单,如果不存在则读取内置清单。
重写了文件的加密和解密逻辑。
public interface IDecryptionServices
{
/// <summary>
/// 文件偏移解密方法
/// </summary>
ulong LoadFromFileOffset(DecryptFileInfo fileInfo);
/// <summary>
/// 文件内存解密方法
/// </summary>
byte[] LoadFromMemory(DecryptFileInfo fileInfo);
/// <summary>
/// 文件流解密方法
/// </summary>
System.IO.FileStream LoadFromStream(DecryptFileInfo fileInfo);
/// <summary>
/// 文件流解密的托管缓存大小
/// </summary>
uint GetManagedReadBufferSize();
}
AssetBundleBuilder界面增加了构建版本选项。
新增了PackageVersion构建参数。
public class BuildParameters
{
/// <summary>
/// 构建的包裹版本
/// </summary>
public string PackageVersion;
}
新增了自定义证书认证方法。
public static class YooAssets
{
/// <summary>
/// 设置下载系统参数,自定义的证书认证实例
/// </summary>
public static void SetDownloadSystemCertificateHandler(UnityEngine.Networking.CertificateHandler instance)
}
新增了下载失败后清理文件的方法。
public static class YooAssets
{
/// <summary>
/// 设置下载系统参数,下载失败后清理文件的HTTP错误码
/// </summary>
public static void SetDownloadSystemClearFileResponseCode(List<long> codes)
}
新增了检查资源定位地址是否有效的方法。
public class AssetsPackage
{
/// <summary>
/// 检查资源定位地址是否有效
/// </summary>
/// <param name="location">资源的定位地址</param>
public bool CheckLocationValid(string location)
}
所有下载相关方法增加超时判断参数。
新增首包资源文件拷贝选项。
public class BuildParameters
{
/// <summary>
/// 拷贝内置资源选项
/// </summary>
public ECopyBuildinFileOption CopyBuildinFileOption = ECopyBuildinFileOption.None;
/// <summary>
/// 拷贝内置资源的标签
/// </summary>
public string CopyBuildinFileTags = string.Empty;
}
新增资源包初始化查询字段。
public class AssetsPackage
{
/// <summary>
/// 初始化状态
/// </summary>
public EOperationStatus InitializeStatus
}
增加获取人类可读的版本信息。
public class AssetsPackage
{
/// <summary>
/// 获取人类可读的版本信息
/// </summary>
public string GetHumanReadableVersion()
}
新增资源缓存清理方法。
public static class YooAssets
{
/// <summary>
/// 清理未使用的缓存文件
/// </summary>
public static ClearUnusedCacheFilesOperation ClearUnusedCacheFiles()
}
异步操作类新增繁忙查询方法。
public abstract class GameAsyncOperation
{
/// <summary>
/// 异步操作系统是否繁忙
/// </summary>
protected bool IsBusy()
}
该预览版本提供了分布式构建的功能,用于解决分工程或分内容构建的问题。
新增方法设置异步系统的每帧允许运行的最大时间切片。
/// <summary>
/// 设置异步系统的每帧允许运行的最大时间切片(单位:毫秒)
/// </summary>
public static void SetOperationSystemMaxTimeSlice(long milliseconds)
新增方法设置缓存系统的已经缓存文件的校验等级。
/// <summary>
/// 设置缓存系统的已经缓存文件的校验等级
/// </summary>
public static void SetCacheSystemCachedFileVerifyLevel(EVerifyLevel verifyLevel)
新增方法设置下载系统的断点续传功能的文件大小。
/// <summary>
/// 启用下载系统的断点续传功能的文件大小
/// </summary>
public static void SetDownloadSystemBreakpointResumeFileSize(int fileBytes)
增加清理缓存资源的异步操作类。
/// <summary>
/// 清空未被使用的缓存文件
/// </summary>
public static ClearUnusedCacheFilesOperation ClearUnusedCacheFiles();
ShaderVariantCollecor支持在CI上调用运行。
资源补丁清单增加文件版本校验功能。
AssetBundleBuilder现在构建结果可以查询构建失败信息。
AssetBundleBuilder现在资源包文件名称样式提供选择功能。
class BuildParameters
{
/// <summary>
/// 补丁文件名称的样式
/// </summary>
public EOutputNameStyle OutputNameStyle;
}
增加获取资源信息新方法。
/// <summary>
/// 获取资源信息
/// </summary>
/// <param name="location">资源的定位地址</param>
public static AssetInfo GetAssetInfo(string location);
新增了OperationHandleBase.GetAssetInfo()方法。
/// <summary>
/// 获取资源信息
/// </summary>
public AssetInfo GetAssetInfo();
新增了AssetOperationHandle.GetAssetObjet()方法。
/// <summary>
/// 获取资源对象
/// </summary>
/// <typeparam name="TAsset">资源类型</typeparam>
public TAsset GetAssetObjet<TAsset>();
新增了弱联网情况下加载补丁清单方法。
/// <summary>
/// 弱联网情况下加载补丁清单
/// 注意:当指定版本内容验证失败后会返回失败。
/// </summary>
/// <param name="resourceVersion">指定的资源版本</param>
public static UpdateManifestOperation WeaklyUpdateManifestAsync(int resourceVersion);
新增YooAssets初始化参数。
/// <summary>
/// 下载文件校验等级
/// </summary>
public EVerifyLevel VerifyLevel = EVerifyLevel.High;
新增YooAssets获取资源完成路径的方法。
/// <summary>
/// 获取资源路径
/// </summary>
/// <param name="location">资源的定位地址</param>
/// <returns>如果location地址无效,则返回空字符串</returns>
public static string GetAssetPath(string location);
新增YooAssets初始化参数。
/// <summary>
/// 自动释放游戏对象所属资源句柄
/// 说明:通过资源句柄实例化的游戏对象在销毁之后,会自动释放所属资源句柄。
/// </summary>
public bool AutoReleaseGameObjectHandle = false;
新增YooAssets.IsNeedDownloadFromRemote()方法。
public static bool IsNeedDownloadFromRemote(string location);
新增获取所有子资源对象的方法。
class SubAssetsOperationHandle
{
public TObject[] GetSubAssetObjects<TObject>();
}
异步操作类增加进度查询字段。
class AsyncOperationBase
{
/// <summary>
/// 处理进度
/// </summary>
public float Progress { get; protected set; }
}
增加开启异步操作的方法。
/// <summary>
/// 开启一个异步操作
/// </summary>
/// <param name="operation">异步操作对象</param>
public static void ProcessOperaiton(GameAsyncOperation operation)
新增编辑器下模拟模式的初始化参数。
/// <summary>
/// 用于模拟运行的资源清单路径
/// 注意:如果路径为空,会自动重新构建补丁清单。
/// </summary>
public string SimulatePatchManifestPath;
新增通用的初始化参数。
/// <summary>
/// 资源定位地址大小写不敏感
/// </summary>
public bool LocationToLower = false;
增加获取资源信息的方法。
public static AssetInfo[] GetAssetInfos(string tag)
增加补丁下载器下载全部资源的方法。
public static PatchDownloaderOperation CreatePatchDownloader(int downloadingMaxNumber, int failedTryAgain)
增加指定资源版本的资源更新下载方法。
public static UpdatePackageOperation UpdatePackageAsync(int resourceVersion, int timeout = 60)
Compatible with Unity 2019.4