| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | 
							- import { _decorator, Component, Constructor } from 'cc';
 
- import { ModulerBase } from './ModulerBase';
 
- const { ccclass, property } = _decorator;
 
- @ccclass('GameMgr')
 
- export class GameMgr extends Component {
 
-     //单例
 
-     private static _instance: GameMgr = null;
 
-     private _modluers:ModulerBase[] = [];
 
-     //单例接口
 
-     static get Instance(){return GameMgr._instance}
 
-     protected onLoad(): void {
 
-         //单例赋值 this
 
-         GameMgr._instance = this;
 
-         //获取子节点当中所有被管理的模块
 
-         this._modluers = this.getComponentsInChildren(ModulerBase);
 
-     }
 
-     //开始游戏
 
-     startGame(){
 
-         this._modluers.forEach((moduler:ModulerBase)=>{
 
-             moduler.init();  
 
-         })
 
-     }
 
-     //获取被管理的某个模块(派生类型)
 
-     //模板
 
-     getModuler<T extends ModulerBase>(type: Constructor<T>): T{
 
-         for(const moduler of this._modluers){
 
-             if(moduler instanceof type){
 
-                 return moduler as T;
 
-             }
 
-         }
 
-         return null;
 
-     }
 
-     //移除某个管理模块
 
-     removeModuler<T extends ModulerBase>(type: Constructor<T>){
 
-         for(let i = 0; i < this._modluers.length; i++){
 
-             if(this._modluers[i] instanceof type){
 
-                 this._modluers[i].removeSelf();
 
-                 return;
 
-             }
 
-         }
 
-     }
 
-     start() {
 
-         this.startGame();
 
-     }
 
- }
 
 
  |