Код: Выделить всё
// GamePauseUI:
public class GamePauseUI : MonoBehaviour
{
[SerializeField] private Button resumeButton;
private void Awake()
{
resumeButton.onClick.AddListener(() =>
{
Debug.Log("GamePauseUI > UnpauseGame (click)");
GameManager.Instance.UnpauseGame();
});
Код: Выделить всё
// GameInput:
playerInputActions.Player.Pause.performed += Pause_performed; // Escape key
private void Pause_performed(InputAction.CallbackContext obj)
{
Debug.Log("GameInput > Pause_performed => OnPauseAction");
OnPauseAction?.Invoke(this, EventArgs.Empty);
}
Код: Выделить всё
// Game Manager:
private void Start()
{
GameInput.Instance.OnPauseAction += GameInput_OnPauseAction;
}
// ...
private void GameInput_OnPauseAction(object sender, EventArgs e)
{
// simplified code to illustrate the issue
Debug.Log("Kitchen > GameInput_OnPauseAction");
UnpauseGame();
}
- нажмите Esc для паузы -> пользовательский интерфейс показывает
- нажмите Esc, чтобы возобновить паузу -> пользовательский интерфейс скрывается
- нажмите Esc, чтобы приостановить -> Пользовательский интерфейс показывает:
- нажмите кнопку, чтобы возобновить паузу -> пользовательский интерфейс скрывается (ок)
- нажмите Esc, чтобы приостановить -> в дополнение к правильному запуску ключевого события, он ТАКЖЕ запускает событие onClick, в результате чего пользовательский интерфейс паузы только мигает, а игра возобновляет паузу.
Итак, мой вопрос основан на этой информации: есть ли что-то очевидное, что я упускаю? Почему событие onClick запускается, когда я один раз нажимаю клавишу Esc?
Подробнее здесь: https://stackoverflow.com/questions/792 ... key-on-the
Мобильная версия