コード例 #1
0
        /// <summary>
        /// Opens the pause menuScene
        /// </summary>
        /// <param name="onOpenGUI"></param>
        /// <param name="onCloseGUI"></param>
        public void OpenPauseMenu(Action onOpenGUI, Action onCloseGUI)
        {
            var options = new UIOptions(true, true, false, true);

            options.SetActions(null, x => onOpenGUI?.Invoke(), x => onCloseGUI?.Invoke());

            OpenGUIMenu(pauseMenu, options);
        }
コード例 #2
0
        /// <summary>
        /// Opens the inventory
        /// </summary>
        /// <param name="onOpenGUI"></param>
        /// <param name="onCloseGUI"></param>
        public void OpenInventory(Action onOpenGUI, Action onCloseGUI)
        {
            var options = new UIOptions(true, false, false, false);

            options.SetActions(GameManager.Instance.inventory.InitializeInventory, x => onOpenGUI?.Invoke(), x => onCloseGUI?.Invoke());

            OpenGUIMenu(inventoryUi, options);
        }
コード例 #3
0
        /// <summary>
        /// Opens the monoBehaviour passed as a gui on the main canvas
        /// </summary>
        /// <param name="menu">the gui to instantiate</param>
        /// <param name="options">menuScene instantiation effects</param>
        public void OpenGUIMenu(GameObject menu, UIOptions options)
        {
            if (IsGuiOpened)
            {
                return;
            }

            SoundManager.Instance.PlayNonDiegeticRandomPitchSound(openUIAudio);
            IsGuiOpened     = true;
            m_JustOpenedGUI = true;

            m_CurrentGUI = Instantiate(menu, m_CanvasInstance.transform);

            m_CurrentGUI.SetActive(true);

            options.beforeOpenGUI?.Invoke(m_CurrentGUI);

            m_CurrentGUICanvasGroup = m_CurrentGUI.GetComponent <CanvasGroup>();

            void Callback()
            {
                m_CurrentGUICanvasGroup.interactable = true;

                if (options.pauseTime)
                {
                    Time.timeScale = 0f;
                }
                if (options.lockInput)
                {
                    PlayerInput.Instance.BlockInput();
                }

                if (options.showPointer)
                {
                    PointerManager.Instance.SetCursorActive();
                }
                PlayerController.Instance.BlockMovement(options.lockMovement);

                options.onOpenGUI?.Invoke(m_CurrentGUI);
            }

            if (m_CurrentGUICanvasGroup && !options.pauseTime)
            {
                AnimateAlpha(m_CurrentGUICanvasGroup, 1f, alphaAnimationDuration, Callback);
            }
            else
            {
                Callback();
            }

            m_OnCloseGUI = options.onCloseGUI;
        }