57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
		
		
			
		
	
	
			57 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
|  | import { _decorator, Component, Node } from 'cc'; | ||
|  | const { ccclass, property } = _decorator; | ||
|  | 
 | ||
|  | 
 | ||
|  | type ResumeCallback<T> = (arg: T) => void; | ||
|  | 
 | ||
|  | @ccclass('GameState') | ||
|  | export class GameState extends Component { | ||
|  | 
 | ||
|  |     private static instance: GameState; | ||
|  | 
 | ||
|  |     private constructor() { | ||
|  |         super(); | ||
|  |     } | ||
|  | 
 | ||
|  |     public static getInstance(): GameState { | ||
|  |         if (!GameState.instance) { | ||
|  |             GameState.instance = new GameState(); | ||
|  |         } | ||
|  |         return GameState.instance; | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  |     //当前是否处于暂停状态
 | ||
|  |     PauseState: boolean = false; | ||
|  |     //改变暂停状态的回调函数
 | ||
|  |     ResumeCallBackFunc: ResumeCallback<any>[] = []; | ||
|  | 
 | ||
|  | 
 | ||
|  |     //获取暂停状态
 | ||
|  |     IsPauseState(): boolean { | ||
|  |         return this.PauseState; | ||
|  |     } | ||
|  | 
 | ||
|  |     //设置暂停状态
 | ||
|  |     SetCurrentPauseState(State: boolean) { | ||
|  |         //不等于时 设置一次
 | ||
|  |         if (State != this.PauseState) { | ||
|  |             this.PauseState = State; | ||
|  | 
 | ||
|  |             //调用恢复游戏的逻辑回调函数
 | ||
|  |             this.ResumeCallBackFunc.forEach(callback => { | ||
|  |                 callback(State); | ||
|  |             }); | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  |     //注册恢复游戏的逻辑回调函数
 | ||
|  |     RegisterResumeCallBack(Func: ResumeCallback<any>) { | ||
|  |         this.ResumeCallBackFunc.push(Func); | ||
|  |     } | ||
|  | 
 | ||
|  | 
 | ||
|  | } | ||
|  | 
 | ||
|  | 
 |