UnityでTextMeshProのTMP_InputFieldを使用する際、MultiLineNewlineに設定してもEnterキーを押すとMultiLineSubmitの挙動になってしまう問題が発生することがあります。この現象は設定やスクリプトの影響によるものです。
TMP_InputFieldの基本設定確認
まず、InputFieldのContent Typeが”Standard”、Line Typeが”MultiLine Newline”になっているか確認します。Line Typeが”MultiLine Submit”になっている場合はEnterで送信される動作になります。
また、SubmitイベントやOnEndEditイベントがスクリプトで設定されている場合、Enterキーが押されたときにSubmit処理が優先されることがあります。
EventSystemと入力モジュールの影響
UnityのEventSystemに設定されたInput Moduleが、EnterキーをSubmitとして処理する場合があります。Standalone Input Moduleの”Submit Button”の設定を確認し、必要に応じてカスタムキーに変更することが解決策となる場合があります。
具体的には、EnterキーをSubmitとして扱わないように、スクリプトで入力制御を追加する方法があります。
スクリプトでの回避方法
InputFieldのOnSubmitイベントを無効化し、Enterキー押下時の挙動を自分で制御する方法があります。例えば、UpdateメソッドでInput.GetKeyDown(KeyCode.Return)を検知し、テキストに改行を追加する処理を行います。
これにより、MultiLineNewlineとしての動作が正しく反映されます。
他の注意点
KeyboardTypeやLineTypeの設定だけでなく、Canvasの他のUI要素やFocus制御によってもEnterキーの挙動が変わることがあります。必ずテストプレイでEnterキーが改行になるか確認しましょう。
まとめ
TMP_InputFieldでMultiLineNewlineが機能しない場合は、LineType設定、OnSubmitイベント、EventSystemの入力モジュール、スクリプトによる入力制御を順に確認することが重要です。これらを適切に設定することで、Enterキーで改行されるマルチライン入力を実現できます。


コメント