mirror of
https://gitee.com/dgflash/oops-plugin-framework.git
synced 2026-05-07 19:07:30 +08:00
优化二维游戏层
This commit is contained in:
@@ -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);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user