23.

UE5でSet Input Mode UI Onlyを解除する方法|Game Onlyに戻す

編集

Unreal Engine 5(UE5)で Set Input Mode UI Only(入力モードをUI専用にする)を取り消すには、同じプレイヤーコントローラーに対して Set Input Mode Game Only を呼び出してゲーム操作専用へ戻すか、ゲーム操作とUI操作を両立させたい場合は Set Input Mode Game And UI を呼び出します。UI Onlyは状態を「上書き」する設計のため、別の入力モードを再設定するだけで自動的に解除されます。本記事では、解除の具体的な手順と、マウスカーソルやWidgetの後始末を含めた実装の流れ、つまずきやすいポイントまでを順を追って解説します。

この記事の要点
  • Set Input Mode UI Only を取り消す最も基本的な方法は、Set Input Mode Game Only を呼んでゲーム操作専用へ戻すこと。
  • ゲーム操作中もマウスでUIを操作したい場合は Set Input Mode Game And UI を使う。
  • 入力モードは状態を上書きするため、新しいモードを設定すれば前のUI Onlyは自動的に置き換わる。「解除専用ノード」は存在しない。
  • 入力モードの切り替えとあわせて、マウスカーソルの表示(Show Mouse Cursor)も意図したとおりに切り替える。
  • UIを画面から消す場合は Remove from Parent 等でWidgetを閉じる処理もセットで行うと、状態のズレを防ぎやすい。
  • 操作対象は「UI Onlyを設定したのと同じプレイヤーコントローラー」であることに注意する。

1. Set Input Mode UI Only とは何か

Set Input Mode UI Only は、プレイヤーの入力をUI(Widget)だけに向けるための入力モードです。このモードが有効な間は、マウスやキーボードなどの入力がメニューやボタンといったUI要素にのみ届き、プレイヤーキャラクターの移動・視点操作・アクションといったゲーム側の操作は受け付けられなくなります。

主にポーズメニュー、設定画面、インベントリ、タイトルメニューなど「UIに集中させたい場面」で使われます。逆に言えば、UIでの操作が終わってゲームに戻る場面では、この状態を解除しないとプレイヤーが操作不能のままになってしまうため、必ず別の入力モードへ戻す処理を用意しておく必要があります。とくに、メニューを開く処理だけを実装して、閉じる処理(入力モードを戻す処理)を後回しにしてしまうと、テスト時に「キャラクターが動かない」「視点が回せない」といった不具合として表面化しやすいので注意が必要です。

UE5には主に次の3つの入力モードがあり、用途に応じて使い分けます。

入力モード(ノード名)ゲーム操作UI操作主な用途
Set Input Mode UI Only受け付けない受け付けるメニュー、設定画面など
Set Input Mode Game Only受け付ける原則受け付けない通常のゲームプレイ
Set Input Mode Game And UI受け付ける受け付けるHUD操作とプレイの両立

入力モードはプレイヤーコントローラーが保持する「現在の状態」です。あるモードを設定すると直前のモードは置き換えられます。そのため、「UI Onlyを取り消す」とは、実質的には「UI Only以外のモードを改めて設定する」ことと同じ意味になります。専用の解除ノードがあるわけではない点を押さえておくと理解しやすくなります。

2. Set Input Mode UI Only を取り消す(ゲーム操作へ戻す)

解除の方法は、戻したい状態によって2通りに分かれます。

2-1. ゲーム操作だけに戻す場合:Set Input Mode Game Only

UI操作を完全に終え、純粋なゲームプレイへ戻すときは Set Input Mode Game Only を使います。これにより入力はゲーム側へ戻り、UIへの入力ルーティングは解除されます。Blueprintでの基本手順は次のとおりです。

// Blueprintノードの接続イメージ

Get Player Controller(Player Index 0 など)

 → Set Input Mode Game Only(Target = 取得したPlayer Controller)

 → Set Show Mouse Cursor(Target = 同じPlayer Controller, Show Mouse Cursor = false)

  1. Get Player Controller ノードでプレイヤーコントローラーを取得します。
  2. Set Input Mode Game Only ノードを追加し、Target に取得したプレイヤーコントローラーを接続します。
  3. あわせて Set Show Mouse Cursor を false にし、ゲーム中にマウスカーソルを隠す(必要に応じて)処理を入れます。

2-2. ゲームとUIを両立させる場合:Set Input Mode Game And UI

マウスカーソルを表示したまま、ゲーム操作もUIクリックも両方できる状態に戻したい場合は Set Input Mode Game And UI を使います。クリックでUIを操作しつつ、ワールド上のオブジェクトにも入力を届けたい場合に向いています。

Get Player Controller

 → Set Input Mode Game And UI(Target = Player Controller)

 → Set Show Mouse Cursor(Show Mouse Cursor = true)

Set Input Mode Game And UI ノードには、フォーカス対象とするWidget(In Widget to Focus)、ロックされていないマウス移動でカーソルを隠すかどうか(Hide Cursor During Capture)などのオプションが用意されています。挙動が思いどおりにならない場合は、これらのオプションを見直すと改善することがあります。マウスカーソルを常時表示したい場合は、Hide Cursor During Capture をオフにする運用がよく使われます。

3. マウスカーソルの表示も忘れずに切り替える

入力モードとマウスカーソルの表示は別々の設定です。入力モードを切り替えても、カーソルの表示状態は自動的には変わりません。そのため、入力モードの変更と Show Mouse Cursor の切り替えはセットで考えるのが安全です。

場面入力モードShow Mouse Cursor
メニューを開くUI Onlytrue
メニューを閉じてプレイに戻るGame Onlyfalse(一般的なFPS/TPSの例)
カーソルを出したままプレイGame And UItrue

たとえばポーズメニューを開くときに「UI Only + カーソル表示true」にしたなら、閉じるときには「Game Only + カーソル表示false」のように、開いたときと逆の組み合わせへ戻すと状態のズレが起きにくくなります。カーソルの表示・非表示が想定と食い違う場合は、入力モード側ではなくこの Show Mouse Cursor の設定を見直してみてください。

4. Widgetを閉じる処理(Remove from Parent)とあわせて行う

メニューやインベントリなどのUIを閉じる場面では、入力モードを戻すだけでなく、画面に表示しているWidget自体も閉じる必要があります。Widgetを画面から取り除くには Remove from Parent を使います。入力モードの切り替えとWidgetの除去をひとまとめに実行することで、「UIは消えたのに入力はUIに向いたまま」といった不整合を防げます。

// メニューの「閉じる」ボタン On Clicked などで実行

Set Input Mode Game Only(Target = Player Controller)

 → Set Show Mouse Cursor(false)

 → Remove from Parent(対象のWidget)

実行順序は「入力モードを戻す → カーソルを切り替える → Widgetを閉じる」とすると整理しやすいですが、これらは独立した処理のため、プロジェクトの設計に合わせて順番を調整しても問題ありません。重要なのは、UIを閉じるイベントの中でこの3つを取りこぼさず実行することです。

また、UIを開くときと閉じるときで処理が散らばると保守が難しくなります。開く側で「入力モードをUI Onlyにする・カーソルを表示する・Widgetを生成して画面に追加する」をまとめているのと対になるように、閉じる側でも「入力モードを戻す・カーソルを切り替える・Widgetを閉じる」を1か所にまとめておくと、後から見返したときに状態の対応関係が追いやすくなります。閉じる処理をWidget側の関数やイベントとして用意しておき、ボタンのクリックやキー入力など複数の経路から同じ処理を呼び出せるようにしておくと、解除し忘れのリスクをさらに減らせます。

5. つまずきやすいポイント(落とし穴)

症状よくある原因と対処
UIを閉じたのに操作できないUI Onlyのまま放置している。Game Only か Game And UI を必ず再設定する。UIを閉じるイベントに入力モードの切り替えが含まれているか確認する。
カーソルが消えない/消えてほしくないのに消える入力モードとカーソル表示は別設定。Set Show Mouse Cursor の値を見直す。Game And UIでは Hide Cursor During Capture などのオプションも挙動に影響する。
特定の状況だけ解除されないUI Onlyを設定したのと別のプレイヤーコントローラーに対して解除処理を実行している可能性がある。Target が同一のコントローラーか確認する。
マルチプレイで意図しない挙動になる入力モードやカーソルはローカル(クライアント側)の表示・入力に関わる設定。どのローカルプレイヤーのコントローラーを操作しているかを意識する。

とくに頻度が高いのが、最初の「UI Onlyのまま放置」と、3つ目の「別のプレイヤーコントローラーを操作している」というケースです。Get Player Controller の Player Index や、参照しているコントローラーが意図したものかを必ず確認しましょう。

6. よくある質問(FAQ)

Q1. Set Input Mode UI Only を「解除する専用のノード」はありますか?

専用の解除ノードはありません。入力モードは現在の状態を上書きする仕組みのため、Set Input Mode Game OnlySet Input Mode Game And UI を呼び出すことが、そのまま UI Only の解除になります。

Q2. Game Only と Game And UI のどちらに戻せばよいですか?

プレイ中にマウスカーソルでUIを操作する必要がなければ Game Only、カーソルを表示してUIクリックとゲーム操作を両立させたいなら Game And UI が目安です。一般的なFPS・TPSなどカーソルを隠してプレイするタイトルでは Game Only、HUDやワールド上のUIをクリック操作させたいタイトルでは Game And UI が選ばれることが多くなります。

Q3. 入力モードを戻したのにカーソルが残ります。なぜですか?

入力モードとマウスカーソルの表示は独立した設定だからです。Set Input Mode Game Only を呼んでもカーソルは自動では消えません。Set Show Mouse Cursor を false に設定して、カーソル表示を明示的に切り替えてください。

Q4. UI Onlyとは具体的にどういう状態ですか?

入力がUI(Widget)だけに向けられ、プレイヤーキャラクターの移動や視点操作などゲーム側の操作が受け付けられない状態です。メニューや設定画面に集中させたい場面で使い、操作が終わったら別の入力モードへ戻すのが基本的な流れです。

7. まとめ

UE5で Set Input Mode UI Only を取り消すには、専用の解除ノードを探すのではなく、戻したい状態に応じて入力モードを再設定するのが基本です。ゲーム操作だけに戻すなら Set Input Mode Game Only、UI操作も残すなら Set Input Mode Game And UI を、UI Onlyを設定したのと同じプレイヤーコントローラーに対して呼び出します。あわせて Set Show Mouse Cursor でカーソル表示を切り替え、不要になったWidgetは Remove from Parent で閉じておくと、入力・表示・UIの状態が一致し、トラブルを防ぎやすくなります。具体的なノードの引数や最新の仕様は、利用中のエンジンバージョンの公式ドキュメントもあわせて確認することをおすすめします。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. 床の上に乗ったらイベントを発生させる方法
  2. OverlapAllDynamicとOverlapAllの違い
  3. タイトル画面を作る方法
  4. サードパーソンテンプレートでのキャラクター表示の仕組みと非表示にする方法
  5. ボタンに文字を記載する方法
  6. Event ActorBeginOverlapとOn Component Begin Overlapの違い
  7. キャラクターに特定のオブジェクトとの当たり判定を付ける
  8. 特定のオブジェクトに触れたとき、キャラクターが倒れるようにする
  9. 動いているオブジェクトに静止しているキャラクターが当たり判定を持たない原因と解決方法
  10. 「On Component Hit」に「Cast To ~」で複数のクラスを指定する方法
  11. Blenderファイルをインポートする方法
  12. 鏡を作成する方法
  13. レベルブループリントでキャラクターの出現を設定する方法
  14. サードパーソンテンプレートにおけるキャラクター出現の定義
  15. アイテムに近づいたらボタンを押してイベントを発火させる方法
  16. 画面の中央にメッセージを表示する方法
  17. どこからでも呼び出せるカスタムイベントを作成する方法
  18. カスタムイベントに引数を追加する方法
  19. 「Get Overlapping Actors」から特定のクラスの場合のみ処理を実行する方法
  20. オブジェクトに近づいている間だけメッセージを表示する方法
  21. PCの画面を操作するUIを作る方法
  22. コンテンツブラウザに画像を追加する方法
  23. SetInputMode_UIOnlyを取り消す方法
  24. 特定の画像の上にマウスカーソルを置いたら手マークにする方法
  25. オブジェクトがアウトライナーで選択できない原因と解決策
  26. PlayerStartを作成する方法
  27. メニュー画面を作成して開く方法
  28. 「Esc」キーを押してメニュー画面を開く方法
  29. イベントの「On Clicked」と「On Pressed」の違い
  30. 「Set Input Mode」の種類と使い方
  31. 「Set Game Paused」の使い方と詳細解説
  32. Motion Matchingとは?
  33. 「GameMode」と「GameModeBase」の違い
  34. マップに配置したTargetPointを取得する方法
  35. TargetPointにタグをつけて取得する方法
  36. Spawnしたインスタンスがイベントを実行する方法
  37. 特定の時間ごとに処理を実行する方法
  38. 数値をランダムで出力する方法
  39. ThirdPersonテンプレートでキャラクターの移動を歩くように変更する方法
  40. MaxWalkSpeedを変更する方法
  41. しゃがむ動作を導入する方法
  42. キャラクターのアニメーションを設定する方法
  43. 導入済みのプラグインを確認する方法
  44. Motion Matchingの導入と必要なプラグイン
  45. プレイヤーを非表示にする方法
  46. カメラを傾ける角度を制限させる方法
  47. 配列からランダムに重ならない要素を特定の数取得する方法
  48. カメラの映す画面に文字やエフェクトを付ける方法
  49. キャラクターやメッシュを非表示にした際にカメラが移動しなくなる問題の解決方法
  50. プライマリーデータアセットを活用する方法
  51. プレイヤーのHPといった変数を定義する最適な場所
  52. カメラに映った画面をスクリーンショットとして保存する方法
  53. ゲーム内のカメラ映像を保存して再表示する方法
  54. HighResShot を使って高解像度の画像を保存する方法(UE5)
  55. HighResShotで保存した画像のファイル名を取得する方法
  56. SceneCapture2DとFrameGrabberの画像保存方法の比較
  57. SceneCapture2Dを使用して画像を保存・取得する方法
  58. HighResShotとTake High Res Screenshotの違い
  59. ゲーム終了ボタンを作成する方法
  60. 「Save Game To Slot」の戻り値がfalseになる問題の解決方法
  61. 画面上にメッセージを指定された時間表示させる方法
  62. シェーダコンパイル時間を短縮する方法
  63. 「Take High Res Screenshot」実行時に「シェーダをコンパイル」に長時間待たされる問題とその解決策
  64. データベースを活用する方法
  65. UE5.5がインストールされた環境にUE5.4を追加で導入する方法
  66. World PartitionとWorld Compositionの違い
  67. オープンワールドテンプレートとは?
  68. ポーンをスポーンさせても視点を切り替えない方法
  69. キャラクター同士がすり抜けてしまう問題の解決方法
  70. キャラクターの外見を動的に変更
  71. World Partitionでインスタンスが「アンロード済み」になる問題
  72. データ アセットとデータ テーブルの違い
  73. コンポーネントイベントグラフ内で親クラスの変数にアクセスする方
  74. エディターのソースコードの自動保存の頻度を高める方法
  75. SpawnActorでSpawn Transform Rotationが反映されない理由
  76. ミニマップを表示しポーンの位置を反映する方法
  77. RInterp ToとVInterp Toの違い
  78. 毎秒実行するイベントの定義方法
  79. Niagara のエフェクトにコリジョンを持たせる方法
  80. 「Overlap」と「Hit」の違い
  81. OverlapはあるがHitがない原因
  82. Overlapした位置の座標を取得する方法
  83. ブループリントでレベル間のパラメータを受け渡す方法

最近更新/作成されたページ