Это часто встречающаяся проблема. Проблема в том, что XNA не ориентирована на получение текстового ввода с клавиатуры. Он предназначен для получения текущего состояния каждой клавиши на клавиатуре.
Хотя вы могли бы написать собственный код для проверки таких вещей, как удержание клавиши shift и т. Д., А как насчет клавиатур, которые вы не используете (например, другой язык, другой макет). То, что делает большинство людей, - это получить окна, чтобы сделать это для вас.
Если вы хотите, чтобы текст отображался должным образом, вам нужно воссоздать несколько вещей и получить окна, чтобы сделать это за вас.
См. Сообщение Promit здесь: http://www.gamedev.net/topic/457783-xna-getting-text-from-keyboard/
Использование:
Добавьте его код к вашему решению. Вызови EventInput.Initialize in your game's
метод Initialize` и подпишись на его событие:
EventInput.CharEntered += HandleCharEntered;
public void HandleCharEntered(object sender, CharacterEventArgs e)
{
var charEntered = e.Character;
// Do something with charEntered
}
Примечание. Если вы разрешаете вводить любые символы (например, иностранные с умлаутами и т. Д.), Убедитесь, что ваш SpriteFont
их поддерживает! (Если нет, возможно, просто проверьте, поддерживает ли ваш шрифт его перед добавлением в текстовую строку, или заставьте spritefont использовать специальный недопустимый символ).