Unity_Lesson

ボタンが「押された瞬間」「押され続けた時」などの入力を、コールバックを利用し受け取る

適当なゲームオブジェクトにアタッチ

ActionCallback.cs

using UnityEngine;
using UnityEngine.InputSystem;

public class ActionCallbackExample : MonoBehaviour
{
    [SerializeField] private InputAction _action;

    private void OnEnable()
    {
        // Actionのコールバックを登録
        _action.performed += OnPerformed;
        _action?.Enable();
    }

    private void OnDisable()
    {
        // Actionのコールバックを解除
        _action.performed -= OnPerformed;

        // 自身が無効化されるタイミングなどでActionを無効化
        _action?.Disable();
    }

    //破壊された時など
    private void OnDestroy()
    {
        _action?.Dispose();// 破壊された時などに、Actionを無効化
    }

    // コールバックを受け取ったときの処理
    private void OnPerformed(InputAction.CallbackContext context)
    {    
        var value = context.ReadValue<float>();// Actionの入力値を読み込む       
        Debug.Log($"Actionの入力値 : {value}"); // 入力値をログ出力
    }
}

Actionをインスペクターから設定した後、Action右の歯車アイコンをクリック

Action TypeをButtonに設定

実行確認するとキーが押されるたびにログ出力されるようになります


## スクリプト解説

メソッドを用意。 戻り値や引数は必ずこの形式にする必要があります。
入力値の受取りは、引数contextに対してReadValueメソッドを呼び出すことで行います。

// コールバックを受け取ったときの処理
private void OnPerformed(InputAction.CallbackContext context)
{
    // Actionの入力値を読み込む
    var value = context.ReadValue<float>();

    // 入力値をログ出力
    Debug.Log($"Actionの入力値 : {value}");
}

以下処理でコールバックを登録しています。
コールバックとは
コールバック関数とは

// Actionのコールバックを登録
_action.performed += OnPerformed;

Actionにはstarted、performed、canceledの3種類のコールバックがあります。 例では、performedコールバックに登録してログ出力しています。

2.呼び出されるタイミング3種(started・performed・canceled)

ValueとButtonそれぞれによって若干呼び出しタイミングの意味合いが違います。