UnityでC#を使ったゲーム開発における「InvalidOperationException」エラーの解決方法

C言語関連

UnityでC#を使ったゲーム制作において、特定のエラーが発生することがあります。特に、YouTubeの「ひろはすゲーム開発スタートダッシュ2025」シリーズを参考にしているときに、「InvalidOperationException」というエラーが発生した場合、解決方法を知っておくことが重要です。この記事では、このエラーの原因とその解決方法について解説します。

エラー「InvalidOperationException」の原因とは?

質問者が遭遇しているエラー「InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings」は、UnityのInputシステムの設定に起因しています。このエラーは、従来のInputシステム(UnityEngine.Input)を使用しているにもかかわらず、UnityのPlayer Settingsで新しい「Input System」を有効にしている場合に発生します。

Unityでは、2種類の入力システム(従来の「Input」システムと新しい「Input System」)を選択できます。このエラーは、両方のシステムが衝突することによって発生します。

解決方法:Unityの「Input System」を無効にする

このエラーを解決するためには、UnityのPlayer Settingsで「Input System」を無効にし、従来の「Input」システムを使用する設定に戻す必要があります。以下の手順で解決できます。

  • Unityを開き、「Edit」メニューから「Project Settings」を選択。
  • 「Player」タブを選択し、「Other Settings」を展開。
  • 「Active Input Handling」の項目を「Input Manager」に変更します。
  • これで、新しい「Input System」ではなく、従来の「Input」システムを使用する設定に戻ります。

この変更を行うことで、従来通りUnityEngine.Inputを使って、十字キーやその他の入力デバイスを認識させることができるようになります。

Input Systemを使用したい場合

もし新しい「Input System」を使用したい場合、コード内で新しいシステムに合わせた入力方法に変更する必要があります。例えば、従来のInput.GetAxisやInput.GetKeyDownではなく、InputActionなどを使用して入力を処理します。

Input Systemを使いたい場合の基本的な手順は以下の通りです。

  • 「Edit」>「Project Settings」>「Player」タブで「Active Input Handling」を「Both」または「Input System Package (New)」に変更します。
  • コード内で新しいInput SystemのAPIを使用するように変更します。
  • 具体的には、InputActionを使用して、入力を処理する方法に切り替えます。

まとめ

「InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings」というエラーは、Unityの入力システムの設定ミスによって発生します。このエラーを解決するためには、Player Settingsで「Input System」を無効にし、従来の「Input」システムを使用する設定に戻すことで解消できます。もし新しい「Input System」を使用したい場合は、コード内で適切な変更を行いましょう。

コメント

タイトルとURLをコピーしました