/// <summary> /// 此种方式只能加载需要预加载的依赖包 /// </summary> /// <param name="bundleName"></param> /// <param name="completeCallback"></param> /// <param name="cacheTimeout"></param> public void LoadBundle(string bundleName, Action <string> completeCallback = null) { if (!CheckInited()) { completeCallback?.Invoke(""); return; } IncreaseRef(bundleName); var bundleLoader = new KTBundleLoader() { requestBundleName = bundleName, cacheType = BundleCacheType.Share, request = AssetBundle.LoadFromFileAsync(bundleName), callbackForManager = BundleCompleteCallback }; Action <KTBundleLoader> callback = null; callback = (loader) => { completeCallback?.Invoke(bundleName); bundleLoader.UnSubscribe(callback); }; bundleLoader.Subscribe(callback); m_bundleLoading.Add(bundleName, bundleLoader); bundleLoader.BeginLoad(); }
public void BundleLoadedCallback(KTBundleLoader bundleLoader) { bundleLoader.UnSubscribe(this); dependentBundleNamesLoading.Remove(bundleLoader.requestBundleName); if (dependentBundleNamesLoading.Count > 0) { return; } if (loaderType == LoaderType.Asset) { assetRequest = bundleLoader.request.assetBundle.LoadAssetAsync(requestAssetName); assetRequest.completed += AssetLoadedCallback; } else if (loaderType == LoaderType.Scene) { sceneRequest = SceneManager.LoadSceneAsync(requestAssetName, loadMode); sceneRequest.completed += SceneLoadedCallback; } }