Почему Unity запускает событие щелчка мыши, когда я только нажимаю клавишу на клавиатуре?C#

Место общения программистов C#
Ответить
Anonymous
 Почему Unity запускает событие щелчка мыши, когда я только нажимаю клавишу на клавиатуре?

Сообщение Anonymous »

Я следую руководству, запускаю Unity версии 2022.2.21 на Win10 и пытаюсь добавить в пользовательский интерфейс кнопку, которую можно щелкнуть (мышью), чтобы снять игру с паузы. Я делаю это, добавляя прослушиватель к этой кнопке следующим образом:

Код: Выделить всё

// GamePauseUI:

public class GamePauseUI : MonoBehaviour
{
[SerializeField] private Button resumeButton;

private void Awake()
{
resumeButton.onClick.AddListener(() =>
{
Debug.Log("GamePauseUI > UnpauseGame (click)");
GameManager.Instance.UnpauseGame();
});
Я также использую новую систему ввода и привязал действие «Пауза» к клавише Escape следующим образом:

Код: Выделить всё

// 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»