Функции выполняються несколько раз
В обновлении почему-то код выполняется несколько раз, проверяю через 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();
}