123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import { _decorator, Component, Node } from 'cc';
- import GUIProxy from './GUIProxy';
- const { ccclass, property } = _decorator;
- export class GUIManager{
- //UI 注册信息
- private m_guiMap:Map<number,GUIProxy>=new Map<number,GUIProxy>();
- //正在显示的UI
- private m_showing:Map<number,GUIProxy>=new Map<number,GUIProxy>();
- /**
- * 注册UI
- * @param key UI 全局唯一KEY
- * @param Prefab 预制体地址
- */
- RegisterGUI(key:number,Prefab:string):void{
- if(this.m_guiMap.has(key)){
- throw new Error("UI重复注册:"+key);
- }
- let guiProxy:GUIProxy=new GUIProxy(key,Prefab);
- this.m_guiMap.set(key,guiProxy);
- }
- /**
- * 取消注册
- * @param key UI 全局唯一KEY
- */
- Unregister(key:number):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("无法取消未注册的UI:"+key);
- }
- }
-
- /**
- * 显示UI
- * @param key
- * @param data
- */
- Show(key:number,data?:any):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("未注册的UI:"+key);
- }
- let guiProxy:GUIProxy;
- //已经显示
- if(this.m_showing.has(key)){
- return;
- }else{
- guiProxy=this.m_guiMap.get(key);
- guiProxy.Show(data);
- this.m_showing.set(key,guiProxy);
- }
- }
- /**
- * 隐藏UI
- * @param key
- */
- Hide(key:number):void{
- if(this.m_guiMap.has(key)==false){
- throw new Error("未注册的UI:"+key);
- }
- let guiProxy:GUIProxy;
- //已经显示
- if(this.m_showing.has(key)==false){
- return;
- }else{
- this.m_showing.delete(key);
- guiProxy=this.m_guiMap.get(key);
- guiProxy.Hide();
- }
- }
- /**
- * 界面是否在显示
- */
- isShowing(key:number):boolean{
- if(this.m_guiMap.has(key)==false){
- throw new Error("未注册的UI:"+key);
- }
- if(this.m_showing.has(key)){
- return true
- }else{
- return false
- }
- }
- /**
- * 单例
- */
- private static instance:GUIManager;
- public static get single():GUIManager{
- if(this.instance==null){
- this.instance=new GUIManager();
- }
- return this.instance;
- }
- }
|