feat: 支持 toast
This commit is contained in:
58
assets/scripts/utils/ToastManager.ts
Normal file
58
assets/scripts/utils/ToastManager.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { Node, Prefab, instantiate, find } from 'cc';
|
||||
|
||||
/**
|
||||
* Toast 管理器
|
||||
* 单例模式,统一管理 Toast 提示的显示
|
||||
*/
|
||||
export class ToastManager {
|
||||
private static _instance: ToastManager | null = null;
|
||||
private _prefab: Prefab | null = null;
|
||||
private _container: Node | null = null;
|
||||
|
||||
static get instance(): ToastManager {
|
||||
if (!this._instance) {
|
||||
this._instance = new ToastManager();
|
||||
}
|
||||
return this._instance;
|
||||
}
|
||||
|
||||
private constructor() {}
|
||||
|
||||
/**
|
||||
* 初始化 Toast 管理器
|
||||
* @param prefab Toast 预制体
|
||||
* @param container Toast 容器节点(默认为 Canvas)
|
||||
*/
|
||||
init(prefab: Prefab, container?: Node): void {
|
||||
this._prefab = prefab;
|
||||
this._container = container ?? find('Canvas');
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示 Toast 提示
|
||||
* @param content 提示内容
|
||||
* @param duration 显示时长(毫秒),默认 2000ms
|
||||
*/
|
||||
show(content: string, duration: number = 2000): void {
|
||||
if (!this._prefab || !this._container) {
|
||||
console.error('[ToastManager] 未初始化,请先调用 init()');
|
||||
return;
|
||||
}
|
||||
|
||||
const node = instantiate(this._prefab);
|
||||
this._container.addChild(node);
|
||||
|
||||
// 动态获取 Toast 组件
|
||||
const toast = node.getComponent('Toast') as any;
|
||||
if (toast && typeof toast.show === 'function') {
|
||||
toast.show(content, duration);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 静态快捷方法
|
||||
*/
|
||||
static show(content: string, duration: number = 2000): void {
|
||||
ToastManager.instance.show(content, duration);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user