优化二维游戏层

This commit is contained in:
dgflash
2025-10-09 16:37:54 +08:00
parent de8189bb58
commit 0504225997

View File

@@ -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<Node> {
add(prefab: string, config: GameElementConfig = {}): Promise<Node> {
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<Node> {
addPool(prefab: string, config: GameElementConfig = {}): Promise<Node> {
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);
});
}