Unity 6 での Input System の活用

1. はじめに

Unity 6 では、新しい Input System のデフォルト設定として「Input System_Action」ファイルが初期から作成されています。これにより、従来のように手動で Input Action Asset を作成する必要がなくなりました。本資料では、デフォルトの Input System を活用する方法と、カスタム入力の追加手順を解説します。

2. Input System_Action ファイルの確認

  1. デフォルトの Input System_Action を確認
    • Unity のプロジェクトウィンドウ (Project) を開きます。
    • Assets > Input System_Action に既存のファイルがあることを確認します。
  2. アクションマップ (Action Maps) の内容を確認
    • 初期設定では、以下のアクションマップが定義されています:
      • Player (キャラクターの移動、攻撃、ジャンプなど)
      • UI (UI のナビゲーション、選択など)
    • 既存のアクションをそのまま活用できるため、ゼロから設定する必要はありません。

3. カスタム入力の追加

デフォルトの設定にカスタム入力を追加したい場合、以下の手順を行います。

3.1 新しいアクションの追加

  1. Input System_Action をダブルクリックしてエディタを開きます。
  2. Player アクションマップを選択します。
  3. + Add Action ボタンをクリックし、新しいアクション (例: “CKey") を追加します。
  4. Binding を設定し、Keyboard > C を選択します。

3.2 スクリプトでカスタムアクションを使用

作成したカスタムアクションをスクリプトで利用するには、以下のように記述します。

using UnityEngine;
using UnityEngine.InputSystem;

public class Example : MonoBehaviour
{
    public InputActionAsset inputActionAsset; // Inspector で設定
    private InputAction cKeyAction;

    private void Awake()
    {
        // "Player" アクションマップから "CKey" を取得
        var actionMap = inputActionAsset.FindActionMap("Player");
        cKeyAction = actionMap.FindAction("CKey");
    }

    private void OnEnable()
    {
        cKeyAction.Enable();
    }

    private void OnDisable()
    {
        cKeyAction.Disable();
    }

    void Update()
    {
        if (cKeyAction.WasPressedThisFrame())
        {
            Debug.Log("Cキーが押されました");
        }
    }
}

4. その他の入力検知方法

検知方法説明使用メソッド
一度だけ押されたフレーム単位でキー入力を取得WasPressedThisFrame()
押し続けているキーが押されている間、連続的に判定IsPressed()
キーを離した瞬間キーを離した瞬間に検知WasReleasedThisFrame()
if (cKeyAction.IsPressed())
{
    Debug.Log("Cキーを押し続けています");
}

if (cKeyAction.WasReleasedThisFrame())
{
    Debug.Log("Cキーを離しました");
}

5. まとめ

  • Unity 6 では「Input System_Action」ファイルがデフォルトで用意されているため、新規作成の手間が不要
  • デフォルトのアクションマップ (Player, UI) を活用可能
  • カスタム入力を追加する場合は、「Input System_Action」にアクションを追加してスクリプトで制御する

これにより、新しい Input System の導入がよりスムーズになり、開発の効率化が期待できます。

Input System,Unity

Posted by hidepon