Exemple #1
0
    // Use this for initialization
    void Start()
    {
        if (string.IsNullOrEmpty(m_StartScene) == false)
        {
            UnityEngine.SceneManagement.SceneManager.LoadScene(m_StartScene, UnityEngine.SceneManagement.LoadSceneMode.Single);
        }

//         if (Application.isPlaying == true && Network.PlayerInfo.can_cheat == true)
//         {
//             SRDebug.Instance.IsTriggerEnabled = true;
//         }

        UpdateNotify(false);                                               //更新最新的信息
        if (CurrentGameMenu == GameMenu.IDLE)                              //空闲状态
        {
            MenuInfo menu = LoadMenu(GameMenu.MainMenu, new MenuParams()); //初始化主场景
            ChangeBG(menu);                                                //切换背景
            menu.SetActive(true);                                          //激活主场景
            StackMenu(menu);                                               //将主场景入栈
        }
        else //非空闲状态
        {
            MenuInfo menu = GetCurrentMenu(); //获取当前的场景
            ChangeBG(menu);                   //切换背景
            menu.Init();                      //初始化当前的场景
        }

        PushManager.Instance.ReloadDefaulLocalNotifiation();
    }
Exemple #2
0
    public void ChangeMenu(GameMenu gameMenu, MenuParams parms) //切换场景
    {
        MenuInfo currentMenu = GetCurrentMenu();                //得到当前的场景

        if (gameMenu == currentMenu.menu)                       //如果就是切换到当前的场景那么就把当前的场景激活
        {
            if (parms != null)
            {
                currentMenu.SetParm(parms);  //重新的设置参数
                currentMenu.SetActive(true); //激活
                currentMenu.Init();          //初始化
            }
            else
            {
                currentMenu.UpdateMenu(); //跟新状态
            }
            ChangeBG(currentMenu);        //切换背景
            return;
        }

        if (currentMenu != null)
        {
            if (parms.bAdditive == false)
            {
                if (parms.bStack == false) //表示上面三种长存的界面是长存在栈中的
                {
                    PopMenu();
                    RemoveMenu(currentMenu);
                }
                else
                {
                    currentMenu.Uninit(false, false);
                    currentMenu.SetActive(false);
                }
            }
        }

        switch (gameMenu)
        {
        case GameMenu.Dungeon:
        case GameMenu.DungeonInfo:
            m_MenuStack.RemoveAll(e => e.menu == gameMenu);
            break;
        }

        MenuInfo newMenu = LoadMenu(gameMenu, parms);

        newMenu.IsBack = false;

        StackMenu(newMenu);
        ChangeBG(newMenu);
        if (m_TopFrame != null)
        {
            m_TopFrame.Init();//会在这里面来判断该显示top操作界面上面的东西
        }
    }
Exemple #3
0
    public bool BackMenu(bool bInit = true, bool check = true) //退格到上个场景
    {
        while (m_MenuStack.Count > 1)
        {
            if (check == true && GetCurrentMenu().CheckBackMenuAvailable() == false)
            {
                return(false);
            }

            MenuInfo currentMenu = PopMenu();    //取出最栈中最上面的预设体并且删除

            MenuInfo newMenu = GetCurrentMenu(); //得到当前的场景就是退格前的场景的前一个 在这里完成了 退格的操作

            RemoveMenu(currentMenu);             //移除掉当前的这个场景

            newMenu.IsBack = true;               //就是一个状态为
            if (bInit)
            {
                //newMenu init
                newMenu.SetActive(true);
                if (newMenu.Init() == false)
                {
                    continue;
                }

                ChangeBG(newMenu);
                if (m_TopFrame != null)
                {
                    m_TopFrame.Init();
                }
            }

            return(true);
        }
        return(false);
    }