Я реализую виртуальную консоль для своей игры, и я передаю события Key up через канал событий (Observable Subject) и обрабатываю их на стороне виртуальной консоли с помощью
public void ReceiveInput (Event e)
{
Debug.Log ("ReceiveInput: " + e.ToString ());
if (e.keyCode == KeyCode.Backspace) {
if (ConsoleInputLine.LineText.Length > 2)
ConsoleInputLine.RemoveLastChar ();
return;
}
if (e.keyCode == KeyCode.Return || e.keyCode == KeyCode.KeypadEnter) {
ConsoleInputLine.LineText = "$ ";
return;
}
var chr = e.keyCode.ToString ();
if (e.capsLock || e.shift)
chr = chr.ToUpper ();
else
chr = chr.ToLower ();
ConsoleInputLine.AppendText ("" + chr);
}
Хотя это работает для простых букв A-Z и az, когда вы доберетесь до цифр и других символов, я получу имя необработанного ключа, например «Alpha1» для горизонтальной клавиши «1» над клавишей «Q», «Alpha2» для «2» над «W» и т. д.
Есть ли способ легко получить «рендеринговый» текст из ключевых событий без создания переключателя всех возможных результатов кода клавиши?
PS: я забыл упомянуть, что Shift+Alpha1 это "!" в US Querty shift+Alpha2 — это «@» и т. д., но они будут отличаться в клавиатурах разных стран, и невозможно сделать операторы переключения для каждой клавиатуры в мире.