/* * @Descripttion: * @version: 1.0.0 * @Author: YeeChan * @Date: 2020-07-23 16:59:58 */ import { FMListener, callFM_custom, handleFM_custom } from "../Interface/FMInterface"; import { LogUtils } from "../Util/LogUtils"; /** * https://docs.cocos.com/creator/manual/zh/scripting/asset-bundle.html * bundle 管理 增加一些便捷方式 * cc.assetManager.loadBundle * 或者自己直接操作 Bundle */ export default class BundleMgr { /** * 加载资源包 * @param bundleName 资源包名字 * @param listener */ public static loadBundleByName_custom(bundleName: string, listener: FMListener) { LogUtils.info_custom("加载资源包 " + bundleName); cc.assetManager.loadBundle(bundleName, function (err: Error, bundle: cc.AssetManager.Bundle) { // console.log(bundle) callFM_custom(listener, err, bundle); }); } /** * 获取加载的资源包 * @param bundleName */ public static getBundle_custom(bundleName: string): cc.AssetManager.Bundle { return cc.assetManager.getBundle(bundleName); } /** * * 移除加载的资源包 * @param bundleName 资源包名 * @param releaseAll 是否释放 默认true 释放 */ public static removeBundle_custom(bundleName: string, releaseAll: boolean = true) { let bundle = this.getBundle_custom(bundleName); if (bundle && releaseAll) { //释放所有属于 Asset Bundle 的资源 bundle.releaseAll(); } cc.assetManager.removeBundle(bundle); } /** * 通过场景名称加载分包中的场景。 * @param bundleName 资源包名 * @param sceneName 场景 * @param listener */ public static runScene_custom(bundleName: string, sceneName: string, listener: FMListener = null) { let bundle = this.getBundle_custom(bundleName); if (bundle) { bundle.loadScene(sceneName, function (error, scene) { if (listener) { callFM_custom(listener); } cc.director.runScene(scene); }); } else { this.loadBundleByName_custom(bundleName, handleFM_custom((err: Error, bundle: cc.AssetManager.Bundle) => { bundle.loadScene(sceneName, function (error, scene) { if (listener) { callFM_custom(listener); } cc.director.runScene(scene); }); }, this)) } } }