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