SD-20250415ABSO\Administrator 321e38cb79 冠军框架迁移
2025-04-18 19:18:15 +08:00

271 lines
10 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
using YooAsset;
namespace TEngine
{
/// <summary>
/// 资源管理器接口。
/// </summary>
public interface IResourceManager
{
/// <summary>
/// 获取当前资源适用的游戏版本号。
/// </summary>
string ApplicableGameVersion { get; }
/// <summary>
/// 获取当前内部资源版本号。
/// </summary>
int InternalResourceVersion { get; }
/// <summary>
/// 获取或设置运行模式。
/// </summary>
EPlayMode PlayMode { get; set; }
/// <summary>
/// 缓存系统启动时的验证级别。
/// </summary>
EVerifyLevel VerifyLevel { get; set; }
/// <summary>
/// 同时下载的最大数目。
/// </summary>
int DownloadingMaxNum { get; set; }
/// <summary>
/// 失败重试最大数目。
/// </summary>
int FailedTryAgain { get; set; }
/// <summary>
/// 获取资源只读区路径。
/// </summary>
string ReadOnlyPath { get; }
/// <summary>
/// 获取资源读写区路径。
/// </summary>
string ReadWritePath { get; }
/// <summary>
/// 设置资源只读区路径。
/// </summary>
/// <param name="readOnlyPath">资源只读区路径。</param>
void SetReadOnlyPath(string readOnlyPath);
/// <summary>
/// 设置资源读写区路径。
/// </summary>
/// <param name="readWritePath">资源读写区路径。</param>
void SetReadWritePath(string readWritePath);
/// <summary>
/// 初始化接口。
/// </summary>
void Initialize();
/// <summary>
/// 初始化操作。
/// </summary>
/// <param name="packageName">资源包名称。</param>
UniTask<InitializationOperation> InitPackage(string packageName);
/// <summary>
/// 默认资源包名称。
/// </summary>
string DefaultPackageName { get; set; }
/// <summary>
/// 获取或设置异步系统参数,每帧执行消耗的最大时间切片(单位:毫秒)。
/// </summary>
long Milliseconds { get; set; }
Transform InstanceRoot { get; set; }
/// <summary>
/// 热更链接URL。
/// </summary>
string HostServerURL { get; set; }
/// <summary>
/// 获取或设置资源对象池自动释放可释放对象的间隔秒数。
/// </summary>
float AssetAutoReleaseInterval
{
get;
set;
}
/// <summary>
/// 获取或设置资源对象池的容量。
/// </summary>
int AssetCapacity
{
get;
set;
}
/// <summary>
/// 获取或设置资源对象池对象过期秒数。
/// </summary>
float AssetExpireTime
{
get;
set;
}
/// <summary>
/// 获取或设置资源对象池的优先级。
/// </summary>
int AssetPriority
{
get;
set;
}
/// <summary>
/// 卸载资源。
/// </summary>
/// <param name="asset">要卸载的资源。</param>
void UnloadAsset(object asset);
/// <summary>
/// 资源回收(卸载引用计数为零的资源)
/// </summary>
void UnloadUnusedAssets();
/// <summary>
/// 强制回收所有资源
/// </summary>
void ForceUnloadAllAssets();
/// <summary>
/// 检查资源是否存在。
/// </summary>
/// <param name="location">资源定位地址。</param>
/// <param name="packageName">资源包名称。</param>
/// <returns>检查资源是否存在的结果。</returns>
public HasAssetResult HasAsset(string location, string packageName = "");
/// <summary>
/// 检查资源定位地址是否有效。
/// </summary>
/// <param name="location">资源的定位地址</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
bool CheckLocationValid(string location, string packageName = "");
/// <summary>
/// 获取资源信息列表。
/// </summary>
/// <param name="resTag">资源标签。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <returns>资源信息列表。</returns>
AssetInfo[] GetAssetInfos(string resTag, string packageName = "");
/// <summary>
/// 获取资源信息列表。
/// </summary>
/// <param name="tags">资源标签列表。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <returns>资源信息列表。</returns>
AssetInfo[] GetAssetInfos(string[] tags, string packageName = "");
/// <summary>
/// 获取资源信息。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <returns>资源信息。</returns>
AssetInfo GetAssetInfo(string location, string packageName = "");
/// <summary>
/// 异步加载资源。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="priority">加载资源的优先级。</param>
/// <param name="loadAssetCallbacks">加载资源回调函数集。</param>
/// <param name="userData">用户自定义数据。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包。</param>
void LoadAssetAsync(string location, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData, string packageName = "");
/// <summary>
/// 异步加载资源。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="assetType">要加载的资源类型。</param>
/// <param name="priority">加载资源的优先级。</param>
/// <param name="loadAssetCallbacks">加载资源回调函数集。</param>
/// <param name="userData">用户自定义数据。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包。</param>
void LoadAssetAsync(string location, Type assetType, int priority, LoadAssetCallbacks loadAssetCallbacks, object userData, string packageName = "");
/// <summary>
/// 同步加载资源。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>资源实例。</returns>
T LoadAsset<T>(string location, string packageName = "") where T : UnityEngine.Object;
/// <summary>
/// 同步加载游戏物体并实例化。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="parent">资源实例父节点。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <returns>资源实例。</returns>
/// <remarks>会实例化资源到场景无需主动UnloadAssetDestroy时自动UnloadAsset。</remarks>
GameObject LoadGameObject(string location, Transform parent = null, string packageName = "");
/// <summary>
/// 异步加载资源。
/// </summary>
/// <param name="location">资源的定位地址。</param>
/// <param name="callback">回调函数。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
UniTaskVoid LoadAsset<T>(string location, Action<T> callback, string packageName = "") where T : UnityEngine.Object;
/// <summary>
/// 同步加载子资源对象。
/// </summary>
/// <typeparam name="TObject">资源类型。</typeparam>
/// <param name="location">资源的定位地址。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
public TObject[] LoadSubAssetsSync<TObject>(string location, string packageName = "") where TObject : UnityEngine.Object;
/// <summary>
/// 异步加载子资源对象。
/// </summary>
/// <typeparam name="TObject">资源类型。</typeparam>
/// <param name="location">资源的定位地址。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
public UniTask<TObject[]> LoadSubAssetsAsync<TObject>(string location, string packageName = "") where TObject : UnityEngine.Object;
/// <summary>
/// 异步加载资源。
/// </summary>
/// <param name="location">资源定位地址。</param>
/// <param name="cancellationToken">取消操作Token。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <typeparam name="T">要加载资源的类型。</typeparam>
/// <returns>异步资源实例。</returns>
UniTask<T> LoadAssetAsync<T>(string location, CancellationToken cancellationToken = default, string packageName = "") where T : UnityEngine.Object;
/// <summary>
/// 异步加载游戏物体并实例化。
/// </summary>
/// <param name="location">资源定位地址。</param>
/// <param name="parent">资源实例父节点。</param>
/// <param name="cancellationToken">取消操作Token。</param>
/// <param name="packageName">指定资源包的名称。不传使用默认资源包</param>
/// <returns>异步游戏物体实例。</returns>
/// <remarks>会实例化资源到场景无需主动UnloadAssetDestroy时自动UnloadAsset。</remarks>
UniTask<GameObject> LoadGameObjectAsync(string location, Transform parent = null, CancellationToken cancellationToken = default, string packageName = "");
}
}