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;
|
|
|
|
}
|