using System; using System.Threading; using Cysharp.Threading.Tasks; using UnityEngine; using YooAsset; namespace TEngine { /// /// 资源管理器接口。 /// public interface IResourceModule { /// /// 获取当前资源适用的游戏版本号。 /// string ApplicableGameVersion { get; } /// /// 获取当前内部资源版本号。 /// int InternalResourceVersion { get; } /// /// 获取或设置运行模式。 /// EPlayMode PlayMode { get; set; } /// /// 资源加密方式。 /// EncryptionType EncryptionType { get; set; } /// /// 是否边玩边下载。 /// bool UpdatableWhilePlaying { get; set; } /// /// 同时下载的最大数目。 /// int DownloadingMaxNum { get; set; } /// /// 失败重试最大数目。 /// int FailedTryAgain { get; set; } /// /// 初始化接口。 /// void Initialize(); /// /// 初始化操作。 /// /// 资源包名称。 UniTask InitPackage(string customPackageName); /// /// 默认资源包名称。 /// string DefaultPackageName { get; set; } /// /// 获取或设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)。 /// long Milliseconds { get; set; } /// /// 热更链接URL。 /// string HostServerURL { get; set; } /// /// 备用热更URL。 /// string FallbackHostServerURL { get; set; } /// /// 获取或设置资源对象池自动释放可释放对象的间隔秒数。 /// float AssetAutoReleaseInterval { get; set; } /// /// 获取或设置资源对象池的容量。 /// int AssetCapacity { get; set; } /// /// 获取或设置资源对象池对象过期秒数。 /// float AssetExpireTime { get; set; } /// /// 获取或设置资源对象池的优先级。 /// int AssetPriority { get; set; } /// /// 卸载资源。 /// /// 要卸载的资源。 void UnloadAsset(object asset); /// /// 资源回收(卸载引用计数为零的资源) /// void UnloadUnusedAssets(); /// /// 强制回收所有资源 /// void ForceUnloadAllAssets(); /// /// 强制执行释放未被使用的资源。 /// /// 是否使用垃圾回收。 void ForceUnloadUnusedAssets(bool performGCCollect); /// /// 检查资源是否存在。 /// /// 资源定位地址。 /// 资源包名称。 /// 检查资源是否存在的结果。 public HasAssetResult HasAsset(string location, string packageName = ""); /// /// 检查资源定位地址是否有效。 /// /// 资源的定位地址 /// 指定资源包的名称。不传使用默认资源包 bool CheckLocationValid(string location, string packageName = ""); /// /// 获取资源信息列表。 /// /// 资源标签。 /// 指定资源包的名称。不传使用默认资源包 /// 资源信息列表。 AssetInfo[] GetAssetInfos(string resTag, string packageName = ""); /// /// 获取资源信息列表。 /// /// 资源标签列表。 /// 指定资源包的名称。不传使用默认资源包 /// 资源信息列表。 AssetInfo[] GetAssetInfos(string[] tags, string packageName = ""); /// /// 获取资源信息。 /// /// 资源的定位地址。 /// 指定资源包的名称。不传使用默认资源包 /// 资源信息。 AssetInfo GetAssetInfo(string location, string packageName = ""); /// /// 异步加载资源。 /// /// 资源的定位地址。 /// 加载资源的优先级。 /// 加载资源回调函数集。 /// 用户自定义数据。 /// 指定资源包的名称。不传使用默认资源包。 void LoadAssetAsync(string location, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData, string packageName = ""); /// /// 异步加载资源。 /// /// 资源的定位地址。 /// 要加载的资源类型。 /// 加载资源的优先级。 /// 加载资源回调函数集。 /// 用户自定义数据。 /// 指定资源包的名称。不传使用默认资源包。 void LoadAssetAsync(string location, Type assetType, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData, string packageName = ""); /// /// 同步加载资源。 /// /// 资源的定位地址。 /// 指定资源包的名称。不传使用默认资源包 /// 要加载资源的类型。 /// 资源实例。 T LoadAsset(string location, string packageName = "") where T : UnityEngine.Object; /// /// 同步加载游戏物体并实例化。 /// /// 资源的定位地址。 /// 资源实例父节点。 /// 指定资源包的名称。不传使用默认资源包 /// 资源实例。 /// 会实例化资源到场景,无需主动UnloadAsset,Destroy时自动UnloadAsset。 GameObject LoadGameObject(string location, Transform parent = null, string packageName = ""); /// /// 异步加载资源。 /// /// 资源的定位地址。 /// 回调函数。 /// 指定资源包的名称。不传使用默认资源包 /// 要加载资源的类型。 UniTaskVoid LoadAsset(string location, Action callback, string packageName = "") where T : UnityEngine.Object; /// /// 同步加载子资源对象。 /// /// 资源类型。 /// 资源的定位地址。 /// 指定资源包的名称。不传使用默认资源包 public TObject[] LoadSubAssetsSync(string location, string packageName = "") where TObject : UnityEngine.Object; /// /// 异步加载子资源对象。 /// /// 资源类型。 /// 资源的定位地址。 /// 指定资源包的名称。不传使用默认资源包 public UniTask LoadSubAssetsAsync(string location, string packageName = "") where TObject : UnityEngine.Object; /// /// 异步加载资源。 /// /// 资源定位地址。 /// 取消操作Token。 /// 指定资源包的名称。不传使用默认资源包 /// 要加载资源的类型。 /// 异步资源实例。 UniTask LoadAssetAsync(string location, CancellationToken cancellationToken = default, string packageName = "") where T : UnityEngine.Object; /// /// 异步加载游戏物体并实例化。 /// /// 资源定位地址。 /// 资源实例父节点。 /// 取消操作Token。 /// 指定资源包的名称。不传使用默认资源包 /// 异步游戏物体实例。 /// 会实例化资源到场景,无需主动UnloadAsset,Destroy时自动UnloadAsset。 UniTask LoadGameObjectAsync(string location, Transform parent = null, CancellationToken cancellationToken = default, string packageName = ""); /// /// 获取同步加载的资源操作句柄。 /// /// 资源定位地址。 /// 资源包名称。 /// 资源类型。 /// 资源操作句柄。 AssetHandle LoadAssetSyncHandle(string location, string packageName = "") where T : UnityEngine.Object; /// /// 获取异步加载的资源操作句柄。 /// /// 资源定位地址。 /// 资源包名称。 /// 资源类型。 /// 资源操作句柄。 AssetHandle LoadAssetAsyncHandle(string location, string packageName = "") where T : UnityEngine.Object; /// /// 清理包裹未使用的缓存文件。 /// /// 文件清理方式。 /// 指定资源包的名称。不传使用默认资源包 ClearCacheFilesOperation ClearCacheFilesAsync( EFileClearMode clearMode = EFileClearMode.ClearUnusedBundleFiles, string customPackageName = ""); /// /// 清理沙盒路径。 /// /// 指定资源包的名称。不传使用默认资源包 void ClearAllBundleFiles(string customPackageName = ""); /// /// 资源下载器,用于下载当前资源版本所有的资源包文件。 /// ResourceDownloaderOperation Downloader { get; set; } /// /// 创建资源下载器,用于下载当前资源版本所有的资源包文件。 /// /// 指定资源包的名称。不传使用默认资源包 ResourceDownloaderOperation CreateResourceDownloader(string customPackageName = ""); /// /// 当前最新的包裹版本。 /// string PackageVersion { set; get; } /// /// 获取当前资源包版本。 /// /// 指定资源包的名称。不传使用默认资源包 /// 资源包版本。 string GetPackageVersion(string customPackageName = ""); /// /// 异步更新最新包的版本。 /// /// 请求URL是否需要带时间戳。 /// 超时时间。 /// 指定资源包的名称。不传使用默认资源包 /// 请求远端包裹的最新版本操作句柄。 RequestPackageVersionOperation RequestPackageVersionAsync(bool appendTimeTicks = false, int timeout = 60, string customPackageName = ""); /// /// 向网络端请求并更新清单 /// /// 更新的包裹版本 /// 超时时间(默认值:60秒) /// 指定资源包的名称。不传使用默认资源包 UpdatePackageManifestOperation UpdatePackageManifestAsync(string packageVersion, int timeout = 60, string customPackageName = ""); /// /// 设置远程服务Url。 /// /// 默认远端资源地址。 /// 备用远端资源地址。 void SetRemoteServicesUrl(string defaultHostServer, string fallbackHostServer); /// /// 低内存行为。 /// void OnLowMemory(); /// /// 低内存回调保护。 /// /// 低内存行为。 void SetForceUnloadUnusedAssetsAction(Action action); } }