From 8aa59dce287b07f87f8508f4751023f06b90748d Mon Sep 17 00:00:00 2001 From: dgflash Date: Mon, 7 Jul 2025 10:07:47 +0800 Subject: [PATCH] =?UTF-8?q?GameManager=E6=B7=BB=E5=8A=A0=E8=87=AA=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E6=B8=B8=E6=88=8F=E5=85=83=E7=B4=A0=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/core/game/GameManager.ts | 47 ++++++++++++++++++++++++++- assets/core/gui/layer/LayerManager.ts | 1 - 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/assets/core/game/GameManager.ts b/assets/core/game/GameManager.ts index 48b351d..2f5d64c 100644 --- a/assets/core/game/GameManager.ts +++ b/assets/core/game/GameManager.ts @@ -5,16 +5,61 @@ * @LastEditTime: 2022-09-02 12:09:55 */ import { Node, director } from 'cc'; +import { ViewUtil } from '../utils/ViewUtil'; +import { resLoader } from '../common/loader/ResLoader'; +import { GameComponent } from '../../module/common/GameComponent'; + +/** 游戏元素打开参数 */ +export interface ElementParams { + /** 远程包名 */ + bundle?: string; + /** 节点排序索引 */ + siblingIndex?: number; +} /** 游戏世界管理 */ export class GameManager { - /** 界面根节点 */ + /** 自定义游戏世界根节点 */ root!: Node; constructor(root: Node) { this.root = root; } + /** + * 自定义游戏元素显示 + * @param parent 元素父节点 + * @param prefabPath 元素预制 + * @param params 可选参数据 + */ + open(parent: Node | GameComponent, prefabPath: string, params?: ElementParams): Promise { + return new Promise(async (resolve, reject) => { + let bundleName: string = null! + if (params && params.bundle) { + bundleName = params.bundle; + } + else { + bundleName = resLoader.defaultBundleName; + } + let node: Node = null!; + // 自动内存管理 + if (parent instanceof GameComponent) { + node = await parent.createPrefabNodeAsync(prefabPath, bundleName); + node.parent = parent.node; + } + // 手动内存管理 + else { + node = await ViewUtil.createPrefabNodeAsync(prefabPath, bundleName); + node.parent = parent; + } + + // 自定义节点排序索引 + if (params && params.siblingIndex) node.setSiblingIndex(params.siblingIndex); + + resolve(node); + }); + } + /** 设置游戏动画速度 */ setTimeScale(scale: number) { //@ts-ignore diff --git a/assets/core/gui/layer/LayerManager.ts b/assets/core/gui/layer/LayerManager.ts index b4e6e5f..4dc08a3 100644 --- a/assets/core/gui/layer/LayerManager.ts +++ b/assets/core/gui/layer/LayerManager.ts @@ -170,7 +170,6 @@ export class LayerManager { * oops.gui.toast("提示内容"); */ toast(content: string, useI18n: boolean = false) { - this.notify.toast(content, useI18n) }