using XGame.Framework.Asyncs;
namespace XGame.Framework.Asset
{
///
/// 资源模块接口
///
public interface IAssetModule
{
///
/// 转换AddressableName
/// 会根据游戏当前语言、品质等级返回对应的AddressableName
///
///
///
string ConvertAddressableName(string addressableName);
/////
///// 同步加载接口
///// 使用该接口加载的资源严禁使用Object.Destroy销毁,只能使用Recycle(obj)方法回收
/////
///// 返回值类型
///// 可寻址资源名字
///// 返回泛型对象
//TResult LoadSync(string addressableName);
///// 资源标签,默认为空,相同标签的的异步加载可使用标签统一删除或结束回调
///
/// 异步加载接口
/// 使用该接口加载的资源严禁使用Object.Destroy销毁,只能使用Recycle(obj)方法回收
///
/// 返回对象类型
/// 可寻址资源名字
/// 返回异步回调
IAssetLoadAsync LoadAsync(string addressableName);
///
/// 回收资源
///
///
void Recycle(object obj);
/////
///// 停止指定的异步加载
/////
/////
/////
//void StopAsync(IAssetLoadAsync async);
///
/// 结束所有加载的异步
///
void StopAllAsyncs();
///
/// 卸载所有没有使用的资源
///
void UnloadUnusedAssets();
/////
///// 预留 Instantiate UnityEngine.Object
/////
/////
/////
/////
//TObject Instantiate(TObject original) where TObject : UnityEngine.Object;
///
/// 异步加载Scene的AssetBundle到内存
///
///
IAsync LoadSceneBundleAsync(string sceneName);
///
/// 卸载scene的AssetBundle
///
///
void UnLoadSceneBundle(string sceneName);
#region 预加载
///
/// 预加载接口
/// 只加载不实例化
///
///
///
///
IAssetPreloadAsync PreloadAsync(string addressableName);
///
/// 释放预加载的资源
/// 如果预加载的资源已经实例化,则无效
///
///
void UnloadPreloadAsset(string addressableName);
#endregion
}
}