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