Функции выполняються несколько раз

В обновлении почему-то код выполняется несколько раз, проверяю через Debug, при нажимании Esc срабатывает функция Pause, сразу Resume, а потом опять пауза. И так при других заданиях, например после выхода из диалога пауза сама появляется, хотя должно было просто закрыться окно и тому подобные проблемы. Что не так? Как убрать непонятный повтор кода?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;

public class PauseMenu : MonoBehaviour
{
    public static bool GameIsPaused;
    public DialogWindow dialogWindow;

    public GameObject pauseMenuUI;
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (GameIsPaused)
            {
                Debug.Log("resume");
                Resume();
            }
            if (DialogWindow.IsDialog)
            {
                Debug.Log("dialog");
                dialogWindow.Close();
            }
            else
            {
                Debug.Log("pause");
                Pause();
            }
        }
    }
    public void Resume()
    {
        Cursor.lockState = CursorLockMode.Locked;
        pauseMenuUI.SetActive(false);
        Time.timeScale = 1f;
        GameIsPaused = false;
    } 
    void Pause()
    {
        Cursor.lockState = CursorLockMode.None;
        pauseMenuUI.SetActive(true);
        Time.timeScale = 0f;
        GameIsPaused = true;
    }
    public void ToMainMenu(int sceneNumber)
    {
        SceneManager.LoadScene(sceneNumber);
    }
}

Ответы (1 шт):

Автор решения: Psyxoz0x13

Здесь ошибка в условии. Исправьте на:

if (GameIsPaused)
        {
            Debug.Log("resume");
            Resume();
        }
        else if(dialogWindow)
        {
            Debug.Log("dialog");
        }
        else
        {
            Debug.Log("pause");
            Pause();
        }
→ Ссылка