クイックスタートガイド
ノート: 新しい Input System のインストール方法については、インストール を参照してください。
Input Device からの入力の直接取得
スクリプトの作成をすばやく始める方法は、現在の状態を Input Device から直接読み取ることです。例えば、以下のコードでは、プレイヤーが最後に使用したゲームパッドを取得し、現在の状態を読み取ります。
using UnityEngine;
using UnityEngine.InputSystem;
public class MyPlayerScript :MonoBehaviour
{
void Update()
{
var gamepad = Gamepad.current;
if (gamepad == null)
return; //ゲームパッドが接続されていません。
if (gamepad.rightTrigger.wasPressedThisFrame)
{
//"Use" のコードをここに記述します。
}
Vector2 move = gamepad.leftStick.ReadValue();
//"Move" のコードをここに記述します。
}
}
他の Device タイプでも、同じアプローチ (Keyboard.current
や Mouse.current
など) を使用できます。
Input Action による入力の間接取得
Input Action (入力アクション) を使用して入力を間接的に取得するには、以下のステップに従います。
PlayerInput
コンポーネントを追加します。- Action を作成します。
- Action の応答のスクリプトを記述します。
ステップ 1: PlayerInput
コンポーネントの追加
入力を Input Device から直接取得する方法は手軽で便利ですが、Device のタイプごとに個別のパスが必要です。さらに、ゲーム内で特定のイベントをトリガーする Device Control を後で変更することが難しくなります。
代わりに、Device と、その Device がゲーム内でトリガーする応答を仲介するものとして、Action を使用できます。これを実現する最も簡単な方法は、PlayerInput
コンポーネントを使用することです。このコンポーネントを追加するには、GameObject (ゲームオブジェクト) のインスペクターで Add Component ボタンをクリックします。
ステップ 2: Input Action の作成
各 PlayerInput
コンポーネントは、ゲーム内の 1 人のプレイヤーを表します。入力を受け取るには、コンポーネントが一連の Input Action に関連付けられている必要があります。新しい Action セットを作成する最も簡単な方法は、コンポーネントのインスペクターのウィンドウで Create Actions… ボタンをクリックすることです。これにより、Input Action Map、Input Action 、Input Binding のデフォルトセットが事前設定されたアセットが作成されます。
Create Actions ボタンをクリックすると、Unity から、新しいアセットの作成場所を指定するように求められます。プロジェクトの Assets
フォルダー内のフォルダーとファイル名を選択し (または、デフォルトの名前を受け入れ)、Okay を選択します。これにより、新しい .inputactions
アセットがプロジェクトで作成され、PlayerInput
コンポーネントに接続されて、.inputactions
ファイルのエディターのウィンドウが表示されます。
プロジェクトのニーズに合わせてデフォルトセットを編集できます。ウィンドウの使用方法については、Action エディター の詳細なドキュメントを参照してください。
ステップ 3: Action の応答の設定
コンポーネントに Action を含めたら、各 Action の応答を設定する必要があります。PlayerInput
では、インスペクターのウィンドウで Behavior (動作) プロパティを使用して、いくつかの方法で応答を設定することができます。
オプションの詳細については、通知動作 に関するドキュメントを参照してください。上のスクリーンショットで選択されている Invoke Unity Events では、Unity UI と同じ方法で UnityEvent
が使用されます。Unity では、コンポーネントに関連付けられている Action ごとにイベントが表示されます。これを通じて、各イベントのターゲットメソッドを直接指定できます。
各メソッドは InputAction.CallbackContext
引数を受け取ります。これを使用して、Action をトリガーした Control および Action の値にアクセスすることができます。詳細については、Action のコールバック に関するドキュメントを参照してください。
public class MyPlayerScript :MonoBehaviour
{
public void Fire(InputAction.CallbackContext context)
{
Debug.Log("Fire!");
}
}
これで、PlayerInput
を使用する基本的な設定が完了します。
他の方法による Input Action の設定
Input Action を設定する方法は PlayerInput
以外にもあります。詳細については、Action の作成 に関するドキュメントを参照してください。