私は自分のゲームに仮想コンソールを実装しており、キーアップイベントをイベントパイプ (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 および a ~ z 文字で機能しますが、数字やその他の文字に到達すると、「Q」キーの上の水平方向の「1」キーの「Alpha1」、「Alpha2」などの生のキー名が取得されます。 「W」の上の「2」など
すべての可能なキーコード結果のスイッチを作成せずに、キーイベントから「レンダリングされた」テキストを簡単に取得する方法はありますか?
PS: 言い忘れていましたが、shift+Alpha1 は "!" です。US Querty では、shift+Alpha2 は "@" などですが、国によってキーボードが異なり、世界中のすべてのキーボードに対して switch ステートメントを作成することは現実的ではありません。