diff --git a/assets/core/gui/layer/LayerGame.ts b/assets/core/gui/layer/LayerGame.ts index 388eedd..4b923be 100644 --- a/assets/core/gui/layer/LayerGame.ts +++ b/assets/core/gui/layer/LayerGame.ts @@ -22,74 +22,55 @@ export class LayerGame extends Node { LayerHelper.setFullScreen(this); } - /** - * 添加游戏元素 - * @param prefab 资源地址 - * @param config 游戏元素自定义配置 - */ - add(prefab: string, config: GameElementConfig = {}): Node { - let params = this.setParams(prefab, config, false); - let node = ViewUtil.createPrefabNode(prefab, params.config.bundle); - if (node) { - // 设置自定义属性 - this.setNode(node, config); - - let lge = node.addComponent(LayerGameElement); - lge.params = params; - params.nodes.push(node); - } - return node; - } - /** * 加载资源并添加游戏元素 * @param prefab 资源地址 * @param config 游戏元素自定义配置 */ - addAsync(prefab: string, config: GameElementConfig = {}): Promise { + add(prefab: string, config: GameElementConfig = {}): Promise { return new Promise(async (resolve, reject) => { let bundleName = config.bundle ? config.bundle : resLoader.defaultBundleName; - await resLoader.load(bundleName, prefab, Prefab); - let node = this.add(prefab, config); + if (resLoader.get(prefab, Prefab, bundleName)) await resLoader.load(bundleName, prefab, Prefab); + + let params = this.setParams(prefab, config, false); + let node = ViewUtil.createPrefabNode(prefab, params.config.bundle); + if (node) { + // 设置自定义属性 + this.setNode(node, config); + + let lge = node.addComponent(LayerGameElement); + lge.params = params; + params.nodes.push(node); + } resolve(node); }); } - /** - * 添加游戏元素 - 支持对象池 - * @param prefab 资源地址 - * @param config 游戏元素自定义配置 - */ - addPool(prefab: string, config: GameElementConfig = {}): Node { - let params = this.setParams(prefab, config, true); - let node: Node = null!; - if (params.pool.size() > 0) { - node = params.pool.get()!; - } - else { - node = ViewUtil.createPrefabNode(prefab, params.config.bundle); - node.addComponent(LayerGameElement); - } - - // 设置自定义属性 - this.setNode(node, config); - - let lge = node.getComponent(LayerGameElement)!; - lge.params = params; - - return node; - } - /** * 加载资源并添加游戏元素 - 支持对象池 * @param prefab 资源地址 * @param config 游戏元素自定义配置 */ - addPoolAsync(prefab: string, config: GameElementConfig = {}): Promise { + addPool(prefab: string, config: GameElementConfig = {}): Promise { return new Promise(async (resolve, reject) => { - let bundleName = config.bundle ? config.bundle : resLoader.defaultBundleName; - await resLoader.load(bundleName, prefab, Prefab); - let node = this.addPool(prefab, config); + let params = this.setParams(prefab, config, true); + let node: Node = null!; + if (params.pool.size() > 0) { + node = params.pool.get()!; + } + else { + let bundleName = config.bundle ? config.bundle : resLoader.defaultBundleName; + await resLoader.load(bundleName, prefab, Prefab); + node = ViewUtil.createPrefabNode(prefab, params.config.bundle); + node.addComponent(LayerGameElement); + } + + // 设置自定义属性 + this.setNode(node, config); + + let lge = node.getComponent(LayerGameElement)!; + lge.params = params; + resolve(node); }); }