pinball/assets/_Game/Scripts/Singleton/index.ts

21 lines
598 B
TypeScript

import { Component, Node } from 'cc';
export default function Singleton<T>(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;
}