WinFormアプリとUnityでのキーボード入力の違い

キーボード入力は、アプリケーションやゲームにおいてユーザーからの指示を受け取る重要な方法です。この技術文書では、C#を使ったWindowsフォームアプリケーション(WinForm)とUnityゲームエンジンにおけるキーボード入力の方法と、その違いについて解説します。


1. WinFormアプリでのキーボード入力

イベントベースの入力処理

WinFormでは、キーボード入力をイベントとして処理します。つまり、特定のキーが押された瞬間や離された瞬間にプログラムが反応します。

主なイベント

WinFormで使用されるキーボード入力のイベントには次の3つがあります:

  • KeyDown: キーが押されたときに発生します。
  • KeyPress: 押されたキーの文字データを取得できます。
  • KeyUp: キーが離されたときに発生します。

サンプルコード

以下のコードは、Aキーが押されたときにメッセージボックスを表示する例です。

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.A)
    {
        MessageBox.Show("Aキーが押されました。");
    }
}

ポイント

  • イベントはキーボード操作が発生したときに自動的に呼び出されます。
  • KeyEventArgsを使って押されたキーの情報を取得できます。

2. Unityでのキーボード入力

フレームごとの入力確認

Unityでは、キーボード入力をイベントではなく、毎フレームごとに確認します。UnityのUpdateメソッド内でキーボードの状態をチェックすることが一般的です。

主なメソッド

Unityで使用する主なキーボード入力のメソッドには次の3つがあります:

  • Input.GetKeyDown(): キーが押された瞬間に反応します。
  • Input.GetKey(): キーが押され続けている間、毎フレーム反応します。
  • Input.GetKeyUp(): キーが離された瞬間に反応します。

サンプルコード

以下のコードは、Aキーが押されたときにコンソールにメッセージを表示する例です。

void Update()
{
    if (Input.GetKeyDown(KeyCode.A))
    {
        Debug.Log("Aキーが押されました。");
    }
}

ポイント

  • Updateメソッドは毎フレーム呼び出されるため、そこでキーの状態を確認します。
  • KeyCodeを使って特定のキーを識別します。

3. 主な違い

特徴WinFormUnity
入力処理方法イベントベースポーリング(フレームごとに確認)
メソッド/イベントKeyDownKeyPressKeyUpInput.GetKeyDown()Input.GetKey()など
キーのチェック方法KeyEventArgsを使用Inputクラスを使用
スコープ特定のフォームやコントロールゲーム全体の入力管理

まとめ

WinFormとUnityでのキーボード入力には、主に「イベントベースの処理」と「フレームごとの処理」という違いがあります。WinFormではユーザーがキーを押したタイミングでイベントが発生し、処理が行われます。一方でUnityでは、毎フレームごとにキーボードの状態を確認して入力を処理します。どちらの方法を選ぶかは、アプリケーションの性質やニーズに応じて判断してください。

Unity

Posted by hidepon