import { _decorator, Component, EventTarget, Node } from 'cc'; import GameEvent from '../Enum/GameEvent'; const { ccclass, property } = _decorator; @ccclass('EventManger') export class EventManger extends Component { //singleton private static _instance: EventManger = null; public static get instance(): EventManger { if (!EventManger._instance) { EventManger._instance = new EventManger('EventManger'); } return EventManger._instance; } private _eventTarget = new EventTarget(); onLoad() { if (!EventManger._instance) { EventManger._instance = this; } } public on(eventType: GameEvent, callback?: (...args: any[]) => void, thisArg?: any) { this._eventTarget.on(eventType, callback, thisArg); } public off(eventType: GameEvent, callback?: (...args: any[]) => void, thisArg?: any) { this._eventTarget.on(eventType, callback, thisArg); } public emit(eventType: GameEvent, arg0?: any, arg1?: any, arg2?: any, arg3?: any, arg4?: any) { this._eventTarget.emit(eventType, arg0, arg1, arg2, arg3, arg4); } }