[UNITY]2DRPG開発日誌 #61 FungusとInput Systemを併用する際のエラーについて

Input Systemは(一般的に)UNITY標準のInputManagerとの併用が推奨されていないため、PlayerSettingsから入力処理「(New)InputSystem」に切り替えますよね。

その状態でFungusと併用しようとするとこんなエラーが出ます。

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.
---
Invalid Operation Exception(無効な操作の例外):
あなたはUnityEngine.Inputクラスを使用してInputを読み込もうとしていますが、既にPlayer Settingsで入力処理をInput Systemに切り替えています。

つまり「旧InputManagerを使おうとしてるスクリプトが存在するよ!」という意味ですね。

そのため、Fungus内のスクリプトを編集して、FungusがInputSystemを使うように変更する必要があります。

Fungus > Scripts > Components フォルダにある DialogInput.cs の、この部分

if (writer != null)
{
   if (Input.GetButtonDown(currentStandaloneInputModule.submitButton) ||
      (cancelEnabled && Input.GetButton(currentStandaloneInputModule.cancelButton)))
   {
      SetNextLineFlag();
   }
}

この「Input.GetButtonDown」をInputSystemの「アクション」処理に書き換えるわけですが、とりあえずこちらの記事を参考に特定のキーを割り当ててしまえばエラーは消えます。マウスも同様です。

ちなみに、マウスを無効化したい場合はSayDialog内のDialogInputコンポーネントでClickModeをDisableにすることでも解決可能です。私はマウスを使わないのでDisableにしています。

それでも上記のエラーが消えないので色々探したところ、EventSystem内にTouchInputModuleというコンポーネントがアタッチされていることが原因でした。これを削除すればエラーが消えます。