5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

新規開発や新技術の検証、導入にまつわる記事を投稿しよう!

Unityの新Input SystemのActionが反応しない問題

Last updated at Posted at 2023-06-15

原因と解決策から言うと

原因はControl Schemeのデバイスリストが空だったのです。

image.png

「+」ボタンを押して必要なデバイスを追加することで、作成したActionは反応できるようになりました。

スクリーンショット 2023-06-15 13.54.21.png

同じ問題同じ原因に遭った人は私一人だけではありません。

Control Schemeを作成しない(既存のすべてのControl Schemeを削除する)のも解決策になります。下記のチュートリアル動画の「Create New Input Action Asset」の節を詳しく見ると、Input Actionを作る時にControl Schemeは作られなかったです。

環境

  • Unity 2022.3.2f1
  • Input System 1.6.1
  • macOS Ventura

問題の現象(経緯)

ネットで検索した記事を参考にし

  1. Input Systemパッケージを導入しました。
  2. Input Actionアセットを作成し、キーボードのスペースキーをJumpアクションに紐つけました。ただ、それらの記事に書いていない操作として、Input ActionアセットにControl Schemeを追加しました。
  3. Player Inputをキューブに追加しました。
  4. Actionが起こる時に実行するOnJumpイベントメソッドを書きました。
  5. 自作のスクリプトをPlayer Inputと同じキューブに追加しました。

しかし、シーンをプレイする時に、スペースキーを押してもOnJumpメソッドは呼び出されなかったです。Player InputのBehaviorを

  • Send Messages
  • Broadcast Messages
  • Invoke Unity Events
  • Invoke C Sharp Events

のいずれに変えても問題は依然のままです。

下図は作成したInput Actionアセットです。

スクリーンショット 2023-06-15 15.37.07.png

下図はシーンの構造と追加したPlayer Inputです。

スクリーンショット 2023-06-15 15.40.38.png

Player InputのBehaviorがSend Messagesの時に書いた自作のソースコードは下記です。Invoke Unity EventsとInvoke C Sharp Eventsの時に書いたOnJumpメソッドの宣言とアクションとの紐つけ方はまた多少異なります。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

namespace FamilyDayGame2023
{
    public class Obake : MonoBehaviour
    {
        private void OnJump()
        {
            Debug.Log("Obake Jump");
        }
    }
}

アクションに紐付けたメソッドは呼び出されないですが、Keyboard.current.spaceKey.wasPressedThisFrameはちゃんとtrueを返してくれます。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.InputSystem;

namespace FamilyDayGame2023
{
    public class Obake : MonoBehaviour
    {
        private void Update()
        {
            if (Keyboard.current.spaceKey.wasPressedThisFrame)
                Debug.Log("Obake Jump");
        }
    }
}

参考したInput Systemのチュートリアル記事

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?