//Play场景中窗口的控制 LoadingState 中Enter调用 public void ChangeScenseToPlay(EScenesType front) { foreach (BaseWindow pWindow in mWidowDic.Values) { // 如果窗口类型是EST_Play,初始化窗口 if (pWindow.GetScenseType() == EScenesType.EST_Play) { pWindow.Init(); //如果是常驻窗口,预加载 if (pWindow.IsResident()) { pWindow.PreLoad(); } } //否则 隐藏窗口并释放类对象 else if ((pWindow.GetScenseType() == EScenesType.EST_Login) && (front == EScenesType.EST_Login)) { pWindow.Hide(); //释放窗口对象 pWindow.Realse(); if (pWindow.IsResident()) { pWindow.DelayDestory(); } } } }
public void ChangeScenseToPlay(EScenesType front) { foreach (BaseWindow pWindow in mWidowDic.Values) { if (pWindow.GetScenseType() == EScenesType.EST_Play) { pWindow.Init(); if (pWindow.IsResident()) { pWindow.PreLoad(); } } else if ((pWindow.GetScenseType() == EScenesType.EST_Login) && (front == EScenesType.EST_Login)) { pWindow.Hide(); pWindow.Release(); if (pWindow.IsResident()) { pWindow.DelayDestory(); } } } }
public void ChangeScenseToLogin(EScenesType front) { foreach (CBaseWindow pWindow in m_WindowDic.Values) { if (front == EScenesType.EST_None && pWindow.GetScenseType() == EScenesType.EST_None) { pWindow.Init(); if (pWindow.IsResident()) { pWindow.PreLoad(); } } if (pWindow.GetScenseType() == EScenesType.EST_Login) { pWindow.Init(); if (pWindow.IsResident()) { pWindow.PreLoad(); } } else if ((pWindow.GetScenseType() == EScenesType.EST_Play) && (front == EScenesType.EST_Play)) { pWindow.Hide(); pWindow.Realse(); if (pWindow.IsResident()) { pWindow.DelayDestory(); } } } }
/// <summary> /// 隐藏该类型的所有Window /// </summary> /// <param name="front"></param> public void HideAllWindow(EScenesType front) { foreach (var pWindow in mWidowDic.Values) { if (front == pWindow.GetScenseType()) { pWindow.Hide(); //item.Value.Realse(); } } }
/// <summary> /// 隐藏该类型的所有Window /// </summary> /// <param name="front"></param> public void HideAllWindow(EScenesType front) { foreach (var item in mWidowDic) { if (front == item.Value.GetScenseType()) { Debug.Log(item.Key); item.Value.Hide(); //item.Value.Realse(); } } }
//Login场景中窗口的控制 1.在HolyTechGame中调用时参数传递的是 EScenesType.EST_None // 2.在LoadingState.enter调用 public void ChangeScenseToMain(EScenesType front) { //遍历每一个窗口类。 foreach (BaseWindow pWindow in mWidowDic.Values) { //如果Front的类型是EST_None并且遍历的这个窗口的类型是EST_None, if (front == EScenesType.EST_None && pWindow.GetScenseType() == EScenesType.EST_None) { pWindow.Init();//添加监听器(显示窗口的监听器) //如果是常驻窗口,那么就加载出来 if (pWindow.IsResident()) { //创建窗体 但是没有激活,创建完成之后并初始化 creat() Initwidget() pWindow.PreLoad(); } } //如果当前窗口的类型是EST_Login, if (pWindow.GetScenseType() == EScenesType.EST_Login) { pWindow.Init(); if (pWindow.IsResident()) { pWindow.PreLoad(); } } //否则隐藏并释放 else if ((pWindow.GetScenseType() == EScenesType.EST_Play) && (front == EScenesType.EST_Play)) { pWindow.Hide(); //游戏事件注销 隐藏或销毁窗体 pWindow.Realse(); //移除监听器(指的是窗口显示或隐藏的监听器) if (pWindow.IsResident()) { pWindow.DelayDestory();//销毁窗体 } } } }
public void SetFrontScenes(EScenesType front) { mFrontScenes = front; }