Исключительно блокируемая обработка ввода XNA - PullRequest
1 голос
/ 29 августа 2010

Я пишу приложение XNA, которое требует ввода, направленного только на один обработчик события ввода, который является объектом, который в данный момент заблокирован, т. Е. Игра, меню, консоль и т. Д.

Как лучше всегосделать это?Я думал о создании интерфейса IInputReceiver (с такими методами, как HandleInput), который подключается к центральному диспетчеру ввода, который отправляет только входные события на заблокированный приемник ввода.

Просто интересно, что другие людиделать с обработкой ввода.

1 Ответ

1 голос
/ 29 августа 2010

Самый простой способ - и способ, которым сама XNA обрабатывает вещи - это сделать ввод глобальным (используя статические классы).В вашей функции Update для вашей игры / меню / консоли просто запросите состояние ввода.

Возможно, вам не следует одновременно вызывать Update для более чем одного из этих объектов.Если вам, по какой-то причине, я рекомендую иметь отдельную функцию InputUpdate для каждого, которая считывает состояние ввода.

Если вам нужна обработка «нажатие вверх / вниз» - которая в XNAобычно это делается путем сохранения последнего состояния и текущего состояния - я считаю, что проще всего хранить их глобально и «прокачивать» их в начале вашей функции Game.Update.

Это может показаться не слишком уж необычным- но это вход для игры.Это не должно быть причудливо!

Я не совсем понимаю, что вы подразумеваете под "блокируемым" - но я чувствую, что должен указать, что ввод XNA (чтение) должен выполняться в главном потоке.

...