示例#1
0
 /// <summary>
 /// 暂停游戏
 /// <para>pauseState 暂停界面的状态</para>
 /// </summary>
 /// <param name="pauseState"></param>
 private void PauseGame(ePauseViewState pauseState)
 {
     UIManager.GetInstance().ShowView(WindowName.STGPauseView, pauseState);
     Global.IsPause = true;
     SoundManager.GetInstance().PauseAllSTGSound();
     CommandManager.GetInstance().RunCommand(CommandConsts.PauseGame);
 }
 protected override void OnShow(object data)
 {
     _isShowAniFinish = false;
     _state           = StatePause;
     // 隐藏yesno面板
     _yesNoPanel.SetActive(false);
     _pauseState = data == null ? 0 : (ePauseViewState)data;
     InitAvailableItems(_pauseState);
     PlayShowAni();
     SoundManager.GetInstance().Play("se_pause", Consts.DefaultUISEVolume, false, false);
     UIManager.GetInstance().RegisterViewUpdate(this);
 }
    /// <summary>
    /// 界面打开时根据状态来显示不同的item
    /// <para>0 普通暂停</para>
    /// <para>1 stage all clear之后的暂停</para>
    /// <para>2 播放录像时的暂停</para>
    /// <para>3 录像播放完毕之后的暂停</para>
    /// </summary>
    /// <param name="state"></param>
    private void InitAvailableItems(ePauseViewState state)
    {
        _availableIndex = 0;
        if (state == ePauseViewState.PauseInGame)
        {
            _itemImgList[0].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgPause");
            _itemImgList[1].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgReturnToGame");
            _availableIndex       |= 1 << 0;
            _availableIndex       |= 1 << 1;
            _availableIndex       |= 1 << 2;
            _availableIndex       |= 1 << 3;
            _showItemCount         = 4;
        }
        else if (state == ePauseViewState.PauseAfterGameClear)
        {
            _itemImgList[0].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgPause");
            _itemImgList[1].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgReturnToGame");
            _availableIndex       |= 1 << 1;
            if (ReplayManager.GetInstance().IsReplayEnable())
            {
                _availableIndex |= 1 << 2;
            }
            _availableIndex |= 1 << 3;
            _showItemCount   = 4;
        }
        else if (state == ePauseViewState.PauseInReplay)
        {
            _itemImgList[0].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgPause");
            _itemImgList[1].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgReturnToGame");
            _availableIndex       |= 1 << 0;
            _availableIndex       |= 1 << 1;
            _availableIndex       |= 1 << 3;
            _showItemCount         = 4;
        }
        else if (state == ePauseViewState.PauseAfterReplayFinished)
        {
            _itemImgList[0].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgPause");
            _itemImgList[1].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgReturnToGame");
            _availableIndex       |= 1 << 1;
            _availableIndex       |= 1 << 3;
            _showItemCount         = 4;
        }
        else if (state == ePauseViewState.PauseAfterGameOver)
        {
            _itemImgList[0].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgGameOver");
            _itemImgList[1].sprite = ResourceManager.GetInstance().GetSprite("STGPauseViewAtlas", "ImgContinue");
            _availableIndex       |= 1 << 0;
            _availableIndex       |= 1 << 1;
            if (ReplayManager.GetInstance().IsReplayEnable())
            {
                _availableIndex |= 1 << 2;
            }
            _availableIndex |= 1 << 3;
            _showItemCount   = 4;
        }
        _availableList = new List <int>();
        Image         img;
        RectTransform tf;

        for (int i = 0; i < _showItemCount; i++)
        {
            tf  = _selectItems[i].GetComponent <RectTransform>();
            img = tf.GetComponent <Image>();
            tf.anchoredPosition = new Vector2(2000, 2000);
            if ((_availableIndex & (1 << i)) != 0)
            {
                img.color = new Color(1, 1, 1, 1);
                _availableList.Add(i);
            }
            else
            {
                img.color = new Color(1, 1, 1, 0.3f);
            }
        }
        _availableCount = _availableList.Count;
    }