private IEnumerator _loadAsset(LoadRequireData _require_data) { AssetBundle bundle = _require_data.Resource.GetBundle(); if (bundle == null) { Debug.LogErrorFormat("Bundle: {0}为空 不能加载asset: {1}", _require_data.Resource.GetResConfig().BundleName, _require_data.AssetName); m_loading_asset.Remove(_require_data); yield break; } Debug.LogFormat("开始异步加载asset: {0}", _require_data.AssetName); AssetBundleRequest asset_load_request = bundle.LoadAssetAsync(_require_data.AssetName); yield return(asset_load_request); if (asset_load_request.asset == null) { Debug.LogErrorFormat("加载bundle: {0} 中的asset: {1} 失败", _require_data.Resource.GetResConfig().BundleName, _require_data.AssetName); m_loading_asset.Remove(_require_data); yield break; } Debug.LogFormat("asset: {0}异步加载完成", _require_data.AssetName); _require_data.Resource.OnAssetLoaded(_require_data.AssetName, asset_load_request.asset); m_loading_asset.Remove(_require_data); }
public void Update() { if (m_current_loading != null || m_pending_asset.Count == 0) { return; } m_current_loading = m_pending_asset.Dequeue(); StartCoroutine(_loadAssetBundle(m_current_loading)); }
private IEnumerator _loadAssetBundle(LoadRequireData _require_data) { AssetBundleRequest asset_load_request = _require_data.Resource.Assetbundle.LoadAssetAsync(_require_data.AssetName, _require_data.Type); yield return(asset_load_request); if (asset_load_request.asset == null) { Log.Error(eLogType.Resources, "从Assetbundle: [{0}]中加载Asset: [{1}]失败!", _require_data.Resource.ResouceInfo.Name, _require_data.AssetName); _require_data.Resource.OnAssetLoaded(null); yield break; } Log.Debug(eLogType.Resources, "成功从Assetbundle: [{0}]中加载Asset: [{1}]!", _require_data.Resource.ResouceInfo.Name, _require_data.AssetName); asset_load_request.asset.name = asset_load_request.asset.name.ToLower(); _require_data.Resource.OnAssetLoaded(asset_load_request.asset); m_current_loading = null; }