Menu
CoddyTech

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を使用します。

自分で試してみよう

このレッスンにはコードチャレンジは含まれていません。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

本格的なゲームを作るのすべてのレッスン