U3D客户端框架(资源管理篇)之资产加载器 AssetLoaderRoutine

资源加载器

加载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()
        {
            
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_33531923/article/details/128489481