0

私は自分のゲームに仮想コンソールを実装しており、キーアップイベントをイベントパイプ (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 ステートメントを作成することは現実的ではありません。

4

1 に答える 1