Spatial.ioで開発を行っていく際に、「このキー、ちゃんと認識されてる?」「特定のキーを押したときの処理を作りたいな」と感じることはありませんか?この記事では、どんなキーが押されたかをリアルタイムに確認できる便利なC#スクリプトとその使い方を解説します。
1. このスクリプトでできること
- キーボードのどのキーが押されたかをリアルタイムでログに出力します。
- ブラウザの開発者コンソールで確認可能です(前回の記事参照)。
2. 動作環境
- Windows 11
- Unity 2021.3.44f1
- Spatial Creator Toolkit
- Web ブラウザ(今回はChrome)
3. 実際のコード
以下が、押された全てのキー入力を検知して出力するC#スクリプトです。
using UnityEngine;
using System; // Enum.GetValues を使うために必要
public class KeyInputLogger : MonoBehaviour
{
// Inspectorから有効/無効を切り替えられるフラグ
public bool enableKeyLogging = true;
// 全てのKeyCodeを格納する配列
private KeyCode[] _allKeyCodes;
void Awake()
{
// KeyCode列挙型の全ての値を取得して配列に格納
// この処理は一度だけ行えば良いためAwakeで行う
_allKeyCodes = (KeyCode[])Enum.GetValues(typeof(KeyCode));
}
void Update()
{
// enableKeyLoggingがtrueの場合のみキー入力をログに出力
LogAllKeyInputs();
}
// 全てのキー入力をチェックし、押されていたらログに出力するメソッド
void LogAllKeyInputs()
{
// フラグがfalse、またはKeyCode配列が未初期化の場合は何もしない
if (!enableKeyLogging || _allKeyCodes == null)
return;
// 格納されている全てのKeyCodeを順番にチェック
foreach (KeyCode kcode in _allKeyCodes)
{
// Input.GetKeyDown() はキーが押された最初のフレームでtrueを返す
if (Input.GetKeyDown(kcode))
{
// ログに見やすいようにプレフィックスとKeyCode名を出力
Debug.Log($"[KeyInputLogger] キー入力検出: {kcode}");
}
}
}
}
解説
-
Awake()
: スクリプトが有効になった最初のフレームでKeyCode列挙型の全ての値を_allKeyCodes配列にキャッシュします。これにより、Update()内で毎回取得する負荷を避けます。 -
Update()
: 毎フレームLogAllKeyInputs()
メソッドを呼び出します。 -
LogAllKeyInputs()
:-
enableKeyLogging
フラグで機能のON/OFFを切り替えられます。デバッグ時以外はfalseにしておくことを推奨します(後述の注意点参照)。 -
_allKeyCodes
配列内の全てのキーコードを反復処理し、Input.GetKeyDown(kcode)
を使用して各キーが「押された瞬間」であるかをチェックします。 - キーが押された場合、
Debug.Log()
でそのキーコード名をコンソールに出力します。ログのプレフィックス[KeyInputLogger]
は、他のログと区別しやすくするためのものです。
-
4. Spatial.io環境でのログ確認
-
上記のC#スクリプトをプロジェクト内に作成します(例: KeyInputLogger.cs)。
-
シーン内に空の
GameObject
を作成します。 -
作成した
GameObject
にKeyInputLogger.cs
スクリプトをアタッチします。 -
Inspectorウィンドウで、アタッチした
KeyInputLogger
コンポーネントのEnable Key Logging
チェックボックスがオンになっていることを確認します。 -
ブラウザでF12キーを押して開発者ツールを開きます。
-
Consoleタブを選択します。
-
フィルタ入力欄に
[KeyInputLogger]
と入力すると、このスクリプトからのログのみに絞り込めます。
これで、Spatial環境で実際にどのキー入力が認識されているかを確認できます。
まとめ
今回は、押された全てのキーボード入力をログに出力する簡単なデバッグ用スクリプトを紹介しました。
このスクリプトを使うことで、開発初期段階でのキー入力の確認や、特定のキーが意図した通りに認識されるかのテストが容易になります。
パフォーマンスに注意しつつ、開発の一助としてご活用ください!