资源加载器
加载assetbundle内的资源
//资源加载器(加载assetbundle内的资源使用)
public class AssetLoaderRoutine
{
//资源加载请求
private AssetBundleRequest m_CurrAssetBundleRequest;
//当前的资源名
private string m_CurrAssetName;
//资源请求更新 回调(加载中进入更新回调)
public Action<float> OnAssetUpdate;
//加载资源完毕 回调
public Action<UnityEngine.Object> OnLoadAssetComplete;
/// <summary>
/// 加载资源(异步)
/// </summary>
/// <param name="assetName">资源名</param>
/// <param name="assetBundle">assetbundle包实体</param>
public void LoadAsset(string assetName, AssetBundle assetBundle)
{
m_CurrAssetName = assetName;
m_CurrAssetBundleRequest = assetBundle.LoadAssetAsync(assetName);
}
//更新 加载资源请求
private void UpdateAssetBundleRequest()
{
if (m_CurrAssetBundleRequest == null)
return;
//加载完成
if (m_CurrAssetBundleRequest.isDone)
{
UnityEngine.Object obj = m_CurrAssetBundleRequest.asset;
//加载成功
if (obj != null)
{
GameEntry.Log(LogCategory.Resource,"资源=>{0} 加载完毕",obj.name);
Reset();
OnLoadAssetComplete?.Invoke(obj);
}
//加载失败
else
{
GameEntry.Log(LogCategory.Resource,"资源=>{0} 加载失败",m_CurrAssetName);
Reset();
OnLoadAssetComplete?.Invoke(null);
}
}
//未加载完成
else
{
//更新进度
OnAssetUpdate?.Invoke(m_CurrAssetBundleRequest.progress);
}
}
//更新
public void OnUpdate()
{
}
//重置
public void Reset()
{
}
}