import { Component, Node } from 'cc'; export default function Singleton(component?: string) { class Singleton extends Component { //singleton private static _instance: T = null; public static get instance(): T { if (component && !Singleton._instance) { Singleton._instance = new Node(component).addComponent(component) as T; } return Singleton._instance; } protected onLoad(): void { Singleton._instance = this as unknown as T; } } return Singleton; }