メインコンテンツまでスキップ

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

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

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に設定

  • Value – スティックなど値が入力したときにコールバックを受け取る設定
  • 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それぞれによって若干呼び出しタイミングの意味合いが違います。

  • Value – スティックなど値が入力されたときにコールバックを受け取る設定
    • started – 入力が0から0以外に変化したとき
    • performed – 入力が0以外に変化したとき
    • canceled – 入力が0以外から0に変化したとき




  • Button – ボタンが押された瞬間にコールバックを受け取る設定
    • started – 入力が0から0以外に変化したとき

    • performed – 入力の大きさが閾値Press以上に変化したとき

    • canceled – 入力が0以外から0に変化したとき、またはperformedが呼ばれた後に入力の大きさが閾値Release以下に変化したとき

      *閾値の設定は、トップメニューのEdit > Project Settings > Input System Packageの以下項目から変更できます

      閾値Pressの値は「Default Press Button Point」
      閾値Releaseの値は「Press × Button Release Threshold」となり、Pressと掛け算した値になります。





  • Pass Through - デバイス入力がある間にperformedが呼ばれ続けます
    • performed - 入力があったとき
    • canceled - 例えば、デバイスが切り替わった場合、切り替わり前のデバイスが無効(Disabled)となり、canceledコールバックが呼び出されます。