/// <summary> /// 关闭窗体 /// </summary> /// <param name="windowName">窗体名称</param> /// <param name="destroyWindow">是否销毁窗体</param> public void PopWindow(string windowName, bool destroyWindow = false) { Debug.Log(mUIStack.Count); if (mUIStack.Contains(GetWindowByName(windowName))) { UGUIWindowBase temp = mUIStack.Pop(); while (temp.windowInfo.GameObjectName != windowName) { temp.Hide(); if (destroyWindow) { temp.CloseWindow(); manager.CloseWindow(temp); windowIndex.Remove(temp.windowInfo.GameObjectName); } temp = mUIStack.Pop(); } temp.Hide(); if (destroyWindow) { temp.CloseWindow(); manager.CloseWindow(temp); windowIndex.Remove(temp.windowInfo.GameObjectName); } } else { Debug.LogError("UGUIFrameworkStackError: 名称为" + windowName + "的窗口未打开,无法隐藏或关闭!"); } }
public void PopAllWindow(bool destroyWindow = false) { while (mUIStack.Count > 0) { UGUIWindowBase temp = mUIStack.Pop(); temp.Hide(); if (destroyWindow) { temp.CloseWindow(); manager.CloseWindow(temp); windowIndex.Remove(temp.windowInfo.GameObjectName); } } }
/// <summary> /// 初始化函数 /// </summary> public void InitStack() { List <string> removeKeyList = new List <string>(); foreach (var VARIABLE in windowIndex) { UGUIWindowBase temp = VARIABLE.Value; if (!temp.windowInfo.DontClearOnChange) { removeKeyList.Add(VARIABLE.Key); temp.Hide(); manager.CloseWindow(temp); } } foreach (var VARIABLE in removeKeyList) { windowIndex.Remove(VARIABLE); } }
/// <summary> /// 初始化UGUI框架 /// </summary> /// <param name="windowConfig">配置文件</param> public void InitUGUIFramework(UGUIWindowConfig windowConfig) { UGUICanvas = null; if (!GameObject.Find("UGUICanvas")) { Debug.LogError("UGUIFrameworkInitError: 未找到名称为UGUICanvas的物体,请将预制体拖放到场景中"); return; } UGUICanvas = GameObject.Find("UGUICanvas").transform; //清除上一个配置 Stack.InitStack(); //清空窗口信息缓存列表 for (int i = 0; i < cacheWindowInfos.Count;) { if (!cacheWindowInfos[i].DontClearOnChange) { cacheWindowInfos.RemoveAt(i); } else { i++; } } //清空索引字典 List <Type> removeKeyList = new List <Type>(); foreach (var VARIABLE in windowIndex) { UGUIWindowBase temp = VARIABLE.Value; if (!temp.windowInfo.DontClearOnChange) { removeKeyList.Add(VARIABLE.Key); temp.Hide(); CloseWindow(temp); } } foreach (var VARIABLE in removeKeyList) { windowIndex.Remove(VARIABLE); } if (windowConfig == null) { Debug.LogError("UGUIFrameworkInitError: 配置文件读取失败,配置文件为空!"); return; } //加载配置文件 foreach (var windowInfo in windowConfig.UIWindowInfoList) { if (GetUGUIWindowInfoByName(windowInfo.GameObjectName) != null) { Debug.LogWarning("UGUIFrameworkInitWarning: 尝试加载" + windowInfo.GameObjectName + "窗体时发现该窗体已被缓存,窗体未被加载。"); } else { cacheWindowInfos.Add(windowInfo); } } }