ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
「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に有効な参照が来ているかを確認してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- 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 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?