コード例 #1
0
 /// <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 + "的窗口未打开,无法隐藏或关闭!");
     }
 }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
        /// <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);
            }
        }
コード例 #4
0
        /// <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);
                }
            }
        }