2つの入力システム
CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 43/56。
Unityには、キーボードとマウスを読み取る方法が2つあります。これまで使ってきたのはInput Managerです。GetKey、GetAxis、GetButtonDownを使うInputクラスと、Project Settings > Input Managerで名前を付ける軸やボタンを使います。新しい方法はInput Systemパッケージ(com.unity.inputsystem)です。スクリプトはusing UnityEngine.InputSystem;で始まり、Keyboard.currentやMouse.currentなどのオブジェクトとしてデバイスを読み取り、さらにアクションを通じて読み取ります。アクションとは、MoveやJumpのようにプレイヤーが行う操作に名前を付けたもので、それぞれキー、スティック、ボタンに割り当てられます。
プロジェクトでどちらを使うかはPlayer設定で決まります。Edit > Project Settings > Player > Other Settings > Active Input Handlingにある選択肢は3つです。Input Manager (Old)、Input System Package (New)、Bothです。新しいUnity 6プロジェクトはInput System Package (New)で開始します。この設定では、Inputクラスを呼び出すたびにInvalidOperationExceptionがスローされます。この例外は、プロジェクトでInput Systemパッケージを使用しているのに、UnityEngine.Inputを通じて入力を読み取っていることを示します。そのため、これまでのレッスンではBothを選ぶよう案内していました。設定を変更するにはエディターの再起動が必要で、Unityが再起動を提案します。
Unity 6では新しいシステムが初期設定になっています。キーボード、マウス、ゲームパッド、タッチスクリーン、XRコントローラーを1つのAPIで扱え、アクションを使えばキーをコードから切り離せるためです。スクリプトがJumpアクションを読み取る場合、同じ1行でSpace、ゲームパッドのAボタン、スマートフォン上のボタンを使えます。また、プレイヤーがキー割り当てを変更した場合にも対応できます。古いInput Managerは、以前のプロジェクト向けに引き続き利用できます。CoddyのゲームビューはBothと同じように動作するため、キー入力、クリック、スマートフォンのパッド(矢印とJump)は両方のシステムに届きます。この章の残りではInput Systemを使用します。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。