using System; using System.Diagnostics; using System.Collections; using System.Collections.Generic; using UnityEngine.SceneManagement; namespace YooAsset { public static partial class YooAssets { private static ResourcePackage _defaultPackage; /// /// 设置默认的资源包 /// public static void SetDefaultPackage(ResourcePackage package) { _defaultPackage = package; } #region 资源信息 /// /// 是否需要从远端更新下载 /// /// 资源的定位地址 public static bool IsNeedDownloadFromRemote(string location) { DebugCheckDefaultPackageValid(); return _defaultPackage.IsNeedDownloadFromRemote(location); } /// /// 是否需要从远端更新下载 /// /// 资源的定位地址 public static bool IsNeedDownloadFromRemote(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.IsNeedDownloadFromRemote(assetInfo); } /// /// 获取资源信息列表 /// /// 资源标签 public static AssetInfo[] GetAssetInfos(string tag) { DebugCheckDefaultPackageValid(); return _defaultPackage.GetAssetInfos(tag); } /// /// 获取资源信息列表 /// /// 资源标签列表 public static AssetInfo[] GetAssetInfos(string[] tags) { DebugCheckDefaultPackageValid(); return _defaultPackage.GetAssetInfos(tags); } /// /// 获取资源信息 /// /// 资源的定位地址 public static AssetInfo GetAssetInfo(string location) { DebugCheckDefaultPackageValid(); return _defaultPackage.GetAssetInfo(location); } /// /// 检查资源定位地址是否有效 /// /// 资源的定位地址 public static bool CheckLocationValid(string location) { DebugCheckDefaultPackageValid(); return _defaultPackage.CheckLocationValid(location); } #endregion #region 原生文件 /// /// 同步加载原生文件 /// /// 资源信息 public static RawFileOperationHandle LoadRawFileSync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadRawFileSync(assetInfo); } /// /// 同步加载原生文件 /// /// 资源的定位地址 public static RawFileOperationHandle LoadRawFileSync(string location) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadRawFileSync(location); } /// /// 异步加载原生文件 /// /// 资源信息 public static RawFileOperationHandle LoadRawFileAsync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadRawFileAsync(assetInfo); } /// /// 异步加载原生文件 /// /// 资源的定位地址 public static RawFileOperationHandle LoadRawFileAsync(string location) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadRawFileAsync(location); } #endregion #region 场景加载 /// /// 异步加载场景 /// /// 场景的定位地址 /// 场景加载模式 /// 加载完毕时是否主动激活 /// 优先级 public static SceneOperationHandle LoadSceneAsync(string location, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSceneAsync(location, sceneMode, activateOnLoad, priority); } /// /// 异步加载场景 /// /// 场景的资源信息 /// 场景加载模式 /// 加载完毕时是否主动激活 /// 优先级 public static SceneOperationHandle LoadSceneAsync(AssetInfo assetInfo, LoadSceneMode sceneMode = LoadSceneMode.Single, bool activateOnLoad = true, int priority = 100) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSceneAsync(assetInfo, sceneMode, activateOnLoad, priority); } #endregion #region 资源加载 /// /// 同步加载资源对象 /// /// 资源信息 public static AssetOperationHandle LoadAssetSync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetSync(assetInfo); } /// /// 同步加载资源对象 /// /// 资源类型 /// 资源的定位地址 public static AssetOperationHandle LoadAssetSync(string location) where TObject : UnityEngine.Object { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetSync(location); } /// /// 同步加载资源对象 /// /// 资源的定位地址 /// 资源类型 public static AssetOperationHandle LoadAssetSync(string location, System.Type type) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetSync(location, type); } /// /// 异步加载资源对象 /// /// 资源信息 public static AssetOperationHandle LoadAssetAsync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetAsync(assetInfo); } /// /// 异步加载资源对象 /// /// 资源类型 /// 资源的定位地址 public static AssetOperationHandle LoadAssetAsync(string location) where TObject : UnityEngine.Object { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetAsync(location); } /// /// 异步加载资源对象 /// /// 资源的定位地址 /// 资源类型 public static AssetOperationHandle LoadAssetAsync(string location, System.Type type) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadAssetAsync(location, type); } #endregion #region 资源加载 /// /// 同步加载子资源对象 /// /// 资源信息 public static SubAssetsOperationHandle LoadSubAssetsSync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsSync(assetInfo); } /// /// 同步加载子资源对象 /// /// 资源类型 /// 资源的定位地址 public static SubAssetsOperationHandle LoadSubAssetsSync(string location) where TObject : UnityEngine.Object { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsSync(location); } /// /// 同步加载子资源对象 /// /// 资源的定位地址 /// 子对象类型 public static SubAssetsOperationHandle LoadSubAssetsSync(string location, System.Type type) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsSync(location, type); } /// /// 异步加载子资源对象 /// /// 资源信息 public static SubAssetsOperationHandle LoadSubAssetsAsync(AssetInfo assetInfo) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsAsync(assetInfo); } /// /// 异步加载子资源对象 /// /// 资源类型 /// 资源的定位地址 public static SubAssetsOperationHandle LoadSubAssetsAsync(string location) where TObject : UnityEngine.Object { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsAsync(location); } /// /// 异步加载子资源对象 /// /// 资源的定位地址 /// 子对象类型 public static SubAssetsOperationHandle LoadSubAssetsAsync(string location, System.Type type) { DebugCheckDefaultPackageValid(); return _defaultPackage.LoadSubAssetsAsync(location, type); } #endregion #region 资源下载 /// /// 创建资源下载器,用于下载当前资源版本所有的资源包文件 /// /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateResourceDownloader(int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceDownloader(downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源标签关联的资源包文件 /// /// 资源标签 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateResourceDownloader(string tag, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceDownloader(new string[] { tag }, downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源标签列表关联的资源包文件 /// /// 资源标签列表 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateResourceDownloader(string[] tags, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceDownloader(tags, downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源依赖的资源包文件 /// /// 资源定位地址 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateBundleDownloader(string location, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateBundleDownloader(location, downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源列表依赖的资源包文件 /// /// 资源定位地址列表 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateBundleDownloader(string[] locations, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateBundleDownloader(locations, downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源依赖的资源包文件 /// /// 资源信息 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateBundleDownloader(AssetInfo assetInfo, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateBundleDownloader(assetInfo, downloadingMaxNumber, failedTryAgain); } /// /// 创建资源下载器,用于下载指定的资源列表依赖的资源包文件 /// /// 资源信息列表 /// 同时下载的最大文件数 /// 下载失败的重试次数 public static ResourceDownloaderOperation CreateBundleDownloader(AssetInfo[] assetInfos, int downloadingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateBundleDownloader(assetInfos, downloadingMaxNumber, failedTryAgain); } #endregion #region 资源解压 /// /// 创建内置资源解压器 /// /// 资源标签 /// 同时解压的最大文件数 /// 解压失败的重试次数 public static ResourceUnpackerOperation CreateResourceUnpacker(string tag, int unpackingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceUnpacker(tag, unpackingMaxNumber, failedTryAgain); } /// /// 创建内置资源解压器 /// /// 资源标签列表 /// 同时解压的最大文件数 /// 解压失败的重试次数 public static ResourceUnpackerOperation CreateResourceUnpacker(string[] tags, int unpackingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceUnpacker(tags, unpackingMaxNumber, failedTryAgain); } /// /// 创建内置资源解压器 /// /// 同时解压的最大文件数 /// 解压失败的重试次数 public static ResourceUnpackerOperation CreateResourceUnpacker(int unpackingMaxNumber, int failedTryAgain) { DebugCheckDefaultPackageValid(); return _defaultPackage.CreateResourceUnpacker(unpackingMaxNumber, failedTryAgain); } #endregion #region 调试方法 [Conditional("DEBUG")] private static void DebugCheckDefaultPackageValid() { if (_defaultPackage == null) throw new Exception($"Default package is null. Please use {nameof(YooAssets.SetDefaultPackage)} !"); } #endregion } }