「SetInputMode_UIOnlyは、'PlayerController'ターゲットとして有効なプレイヤーコントローラーを想定しています」は、Set Input Mode (UI Only) ノード(または関数)の Target(Player Controller)ピンに、有効なPlayerControllerが渡らず None(無効)になっているときに出る警告です。最短の解決は、Get Player Controller (Player Index 0) で取得したPlayerControllerをTargetに必ず接続すること。多くは Target未接続・Get Player Controllerの戻りがNull・呼ぶタイミングが早すぎる、のいずれかが原因です。以下で原因の切り分けと確実な直し方を解説します。
この記事の要点
- このメッセージは「Set Input Mode (UI Only)」のTarget(Player Controller)が None / 無効 なときに出る警告で、入力モードの切り替えがスキップされる。
- 最短の解決は Get Player Controller(0) でPlayerControllerを取得し、その出力を Targetピンに必ず接続すること。
- 原因の典型は「Targetピン未接続(Self扱い)」「Get Player Controllerの戻りがNull」「BeginPlay前など早すぎるタイミング」「WidgetやGameInstanceなどPlayerControllerでない場所で呼んでいる」。
- 呼び出し前に Is Valid でPlayerControllerをチェックすると、原因の切り分けとクラッシュ回避ができる。
- マルチプレイでは サーバー側で呼ばない・Player Indexの取り違えに注意。入力モードはローカル(クライアント)の概念。
1エラーの意味
UE5の入力モード切り替えノード Set Input Mode (UI Only) は、内部的に「どのプレイヤーの入力をUI専用に切り替えるか」を決めるため、Target(Player Controller)ピンに有効なPlayerControllerオブジェクトを必要とします。このTargetが None(空) だったり、すでに破棄されたオブジェクトだったりすると、エンジンは「有効なPlayerControllerを想定していたのに渡されなかった」と判断し、この警告を出して処理を中断(入力モードを切り替えない)します。
つまりエラー自体は「クラッシュ」ではなく、「Targetに正しいPlayerControllerを渡してください」という指摘です。結果として「マウスカーソルが出ない」「UIがクリックできない」「ゲーム入力が止まらない」といった症状につながります。同じ仕組みのため、Set Input Mode (Game And UI) や Set Input Mode (Game Only) でも同種の警告(「expects a valid player controller」)が出ます。
2主な原因
| 原因 | 何が起きているか |
| Targetピンが未接続 | Targetを何も繋がずに実行している。Self(呼び出し元)がPlayerControllerでない場合(Actor・Widget・GameModeなど)はNone扱いになり警告が出る。 |
| Get Player Controllerの戻りがNull | BeginPlayより前など、まだPlayerControllerが生成されていないタイミングで取得しており、戻り値がNullになっている。 |
| Player Indexの間違い | 該当するインデックスのプレイヤーが存在しない(例:シングルプレイなのにIndex 1を指定)ためNullが返る。 |
| キャスト失敗の結果を渡している | カスタムPlayerControllerへの Cast が失敗(別クラス)し、その失敗側のNull出力をTargetに繋いでしまっている。 |
| 呼ぶ場所が不適切 | Widget・GameInstance・サーバー専用ロジックなど、有効なローカルPlayerControllerが手に入らない文脈で呼んでいる。 |
3解決策
原因の多くは「Targetに有効なPlayerControllerを確実に渡す」ことで解決します。次の順で対応してください。
1. Get Player Controller(0) を取得してTargetに繋ぐ(最短)
Get Player Controller ノードを置き、Player Index を 0(シングルプレイ/ローカル先頭プレイヤー)にして、その Return Value をSet Input Mode (UI Only) のTargetピンに接続します。Targetを「未接続のまま」「Selfのまま」にしないことが最重要です。
// Blueprint(ノードの流れ) Event BeginPlay → Get Player Controller (Player Index = 0) → Set Input Mode (UI Only) [ Target = 上のReturn Value ] → Set Show Mouse Cursor (Target = 同じPlayerController, Show = true) |
2. Is Valid で事前チェックする
取得したPlayerControllerが本当に有効かを Is Valid ノード(または ?Is Valid マクロ)で確認し、Valid のときだけ Set Input Mode を実行します。これで「Nullを渡して警告」を確実に防げ、どのタイミングでNullになるかの切り分けにもなります。
Get Player Controller(0) → Is Valid? Valid → Set Input Mode (UI Only) [ Target = PlayerController ] NotValid → 何もしない(または1フレーム遅らせて再取得) |
3. 呼ぶ場所・タイミングを見直す
PlayerControllerが確実に存在する文脈で呼ぶのが基本です。おすすめは PlayerControllerブループリント自身、または BeginPlay以降 のタイミングです。
- PlayerControllerのBP内で呼ぶなら、Targetに Self を繋ぐだけで有効なPlayerControllerになる(最もシンプル)。
- Actorや他のBPで呼ぶ場合は、必ず Get Player Controller(0) 経由でTargetを渡す。
- 取得が早すぎてNullになるなら、BeginPlay 以降に移す。それでも不安定な場合は Delay 0.0(1フレーム待ち) や Set Timer で1フレーム後に実行して再取得する。
4. カスタムPlayerControllerを使う場合
独自のPlayerControllerクラスを使っていても、Set Input ModeのTargetは 基底のPlayer Controller型でそのまま受け取れるため、入力モード切り替えだけが目的ならキャストは不要です。キャストが必要なのは「カスタムクラス独自の関数・変数にアクセスしたいとき」だけです。キャストする場合は、Cast成功側の出力をTargetに繋ぎ、失敗側(Null)を繋がないよう注意してください。
4Set Input Mode 系(UIOnly / GameAndUI / GameOnly)の前提
3種類いずれも「Target = 有効なPlayerController」が前提です。用途と注意点を整理します。
| ノード | 用途と前提 |
| Set Input Mode (UI Only) | 入力をUIだけに渡す(メニュー・ダイアログ等)。Widget to Focus を指定でき、In Widget to Focus が無効だと操作対象が曖昧になることがある。 |
| Set Input Mode (Game And UI) | ゲームとUIの両方に入力を渡す(HUD上のUI操作など)。マウス挙動(ロック/表示)の設定も持つ。 |
| Set Input Mode (Game Only) | 入力をゲーム側に戻す。UIを閉じた後に必ず呼んで入力を元に戻すのが定石。 |
いずれも マウスカーソルの表示は別ノード(Set Show Mouse Cursor)で制御します。「UIは出るがカーソルが見えない」場合は、入力モードとカーソル表示の両方を同じPlayerControllerに対して設定してください。なお細かな引数名・既定挙動はバージョンで変わることがあるため、公式ドキュメントの確認を推奨します。
5落とし穴
| つまずきやすいポイント |
|---|
|
6よくある質問
Q. Targetに何も繋がなくても動く場合があるのはなぜ?
そのノードを PlayerControllerブループリント自身の中で呼んでいる場合、Self が有効なPlayerControllerなので動きます。ActorやGameMode、Widgetなど別の場所で呼ぶとSelfがPlayerControllerでないため警告が出ます。確実を期すなら常に Get Player Controller(0)(Widgetなら Get Owning Player)をTargetに明示してください。
Q. BeginPlayに置いてもNullになります。
初期化順序やレベル遷移直後で、まだ完全にPlayerControllerが用意されていないケースがあります。Delay 0.0(1フレーム待機) や Set Timer by Event で1フレーム後に再取得し、Is Valid を通してから実行すると安定します。
Q. UIを閉じてもゲーム操作が効きません。
UI表示時に Set Input Mode (UI Only) に切り替えたままになっている可能性があります。UIを閉じる処理で Set Input Mode (Game Only) を同じPlayerControllerに対して呼び、必要に応じて Set Show Mouse Cursor を false に戻してください。
Q. カスタムPlayerControllerだとこの警告が出やすい?
クラスがカスタムかどうかは原因ではありません。入力モード切り替えだけならキャスト不要で、基底のPlayer Controller型のままTargetに渡せます。キャストして失敗側(Null)を繋いでいないか、Targetに有効な参照が来ているかを確認してください。
子ページはありません
- SetInputMode_UIOnlyは、'PlayerController'ターゲットとして有効なプレイヤーコントローラーを想定しています
- 無限ループが検出されました
- ~は表示されるブループリント(BlueprintReadOnlyまたはBlueprintReadWrite)ではありません。これは将来のリリースでエラーとなるため、マークアップを修正するかアクセスを停止してください。
- 古いHLODアクタを検出、HLODをリビルドする必要があります
- ブループリントランタイム エラー: "プロパティ ~ の読み取りを試行するためのアクセスはありません"
- 「AI Move To」が「Aborted」で失敗
- 「AI Move To」が「Blocked」で失敗
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- JP1/FTS(File Transmission Server/FTP)とは|伝送カードとftstranの使い方 NEW 2026-10-02 22:03:11
- 日立 JP1 (Job Management Partner 1) 完全ガイド (AJS3 / IM / Base / PFM) 2026-10-02 22:03:11
- JP1/Baseとは|ユーザー認証・ユーザーマッピング・イベントサービスの仕組みと主要コマンド NEW 2026-10-02 22:03:10
- JP1/IM(JP1/IM2・IM3)とは|JP1イベントによる統合監視の仕組みとJP1/Baseとの関係 NEW 2026-10-02 22:03:10
- JP1/AJS3 コマンド一覧|ajsentry・ajsshow・ajsrerunなど主要コマンドの使い方とオプション NEW 2026-10-02 22:03:09
- JP1/AJS3とは?ジョブネット・スケジュール・Manager/Agent/Viewの構成を初心者向けに解説 NEW 2026-10-02 22:03:09
- クラウドネットワークの記事一覧 2026-10-02 16:08:51
- ルーティングとスイッチング完全ガイド — 静的/動的ルーティング/RIP/OSPF/BGP/VLAN/STP 2026-10-02 16:08:51
- ネットワークのアドレッシング完全ガイド — IP/MAC/ポート/サブネット/CIDR/IPv6/NAT 2026-10-02 16:08:51
- 本番環境のdll内で参照しているdllファイルの置き場所 2026-10-02 16:08:50
- 【Visual Studio】 C#のForm自動生成時に「値が有効な範囲にありません」エラー 2026-10-02 16:08:50
- 【Laravelエラー】does not comply with psr-4 autoloading standard. Skipping. 2026-10-02 16:08:50
- 【Laravelエラー】could not find driver(Windows, MySQL編) 2026-10-02 16:08:49
- The following channel memory did not pass cpu memory test. 2026-10-02 16:08:49
- 【pycharm】connecting to console が終わらない 2026-10-02 16:08:49