using System;
using Cysharp.Threading.Tasks;
using PhxhSDK.Res;
using UnityEngine;
using YooAsset;
using Object = UnityEngine.Object;
namespace PhxhSDK
{
///
/// 提供统一的资源管理
/// 注意,此类型中的API都要成对使用,每一次load(如preload,load,loadAsync)都要对应一次unload!
///
public class AssetManager : Singlenton
{
private IResLoader _resLoader;
public bool isInited;
public AssetManager()
{
#if UNITY_EDITOR
if (!Application.isPlaying)
{
// 没有运行的时候,使用假的加载器
_resLoader = new ResLoader_Fake();
_Init();
return;
}
#endif
#if USE_YOO
_resLoader = new ResLoader_YooAsset();
#else
_resLoader = new ResLoader_Addressables();
#endif
_Init();
}
private async void _Init()
{
isInited = false;
await _resLoader.Init();
isInited = true;
}
#region API
///
/// 预加载,不需要资源的时候一定要调用,
/// 获取预加载的资源请调用,不能使用或者,会产生多次引用计数
///
///
///
public async UniTask PostPreload(string path) where T : Object
{
await _resLoader.PostPreload(path);
}
public void PostPreload(string path)
{
PostPreload