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

21 lines
598 B
TypeScript
Raw Normal View History

2024-03-28 20:35:44 -07:00
import { Component, Node } from 'cc';
2024-04-04 04:27:04 -07:00
export default function Singleton<T>(componentName?: string) {
2024-03-28 20:35:44 -07:00
class Singleton extends Component {
//singleton
private static _instance: T = null;
public static get instance(): T {
2024-04-04 04:27:04 -07:00
if (componentName && !Singleton._instance) {
Singleton._instance = new Node(componentName).addComponent(componentName) as T;
2024-03-28 20:35:44 -07:00
}
return Singleton._instance;
}
protected onLoad(): void {
Singleton._instance = this as unknown as T;
}
}
return Singleton;
}