この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:6
ページ更新者:T
更新日時:2026-06-11 07:29:05

タイトル: 「Set Input Mode」の種類と使い方
SEOタイトル: UE5 Set Input Mode の種類と使い分け完全ガイド

この記事の要点
  • Unreal Engine の Set Input Mode はゲームと UI どちらに入力を渡すかを制御する PlayerController 関数
  • 3 種類: Set Input Mode Game Only(ゲームのみ) / Set Input Mode UI Only(UI のみ) / Set Input Mode Game And UI(両方)
  • Game Only: ゲームプレイ中。マウスカーソル非表示、UI ウィジェットに入力届かない
  • UI Only: メニュー画面。ゲーム入力停止、UI のみアクティブ、カーソル表示
  • Game And UI: HUD・インベントリ操作。ゲーム入力も UI 入力も両方届く
  • Set Show Mouse Cursor(マウスカーソル表示)と組み合わせて使うのが基本

Set Input Mode とは

Unreal Engine の Set Input Mode は、プレイヤーの入力を「ゲーム」と「UI(Widget)」のどちらに渡すかを切り替える、Player Controller の関数群です。タイトル画面 / ゲームプレイ / ポーズメニュー / インベントリといった画面状態を作る上で必須の知識です。

3 種類の Set Input Mode

モードゲーム入力UI 入力カーソル主な用途
Set Input Mode Game Only受け取る受け取らない通常非表示ゲームプレイ中
Set Input Mode UI Only受け取らない受け取る表示メインメニュー / ポーズ
Set Input Mode Game And UI受け取る受け取る表示可HUD・インベントリ・ミニマップ

1. Set Input Mode Game Only

純粋なゲームプレイ中に使用。Widget があっても入力は届かず、すべて Player Controller / Pawn に流れます。

Blueprint での書き方

  1. Get Player Controller で PlayerController 取得
  2. Set Input Mode Game Only ノードを呼ぶ
  3. 合わせて Set Show Mouse Cursor → False

C++ での書き方

// MyPlayerController.cpp
#include "Blueprint/UserWidget.h"

void AMyPlayerController::EnterGameplay()
{
    FInputModeGameOnly InputMode;
    InputMode.SetConsumeCaptureMouseDown(true);
    SetInputMode(InputMode);

    bShowMouseCursor = false;
    bEnableClickEvents = false;
    bEnableMouseOverEvents = false;
}

2. Set Input Mode UI Only

メニュー画面・ポーズ画面・タイトル画面で使用。ゲーム入力は完全に止まり、UI 操作のみ可能になります。

必須パラメータ: In Widget to Focus

UI Only モードでは、キーボード入力を受け付ける Widget をフォーカス指定する必要があります。指定しないとキーボードナビゲーション(Tab、矢印キー)が効きません:

void AMyPlayerController::ShowPauseMenu()
{
    PauseWidget = CreateWidget<UUserWidget>(this, PauseWidgetClass);
    PauseWidget->AddToViewport();

    FInputModeUIOnly InputMode;
    InputMode.SetWidgetToFocus(PauseWidget->TakeWidget());
    InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::DoNotLock);
    SetInputMode(InputMode);

    bShowMouseCursor = true;
    UGameplayStatics::SetGamePaused(this, true);
}

Blueprint パターン

  • Create Widget でメニュー Widget 生成
  • Add to Viewport で表示
  • Get Player ControllerSet Input Mode UI Only
  • "In Widget to Focus" ピンに作成した Widget を接続
  • Set Show Mouse Cursor → True

3. Set Input Mode Game And UI

もっとも汎用的。ゲームを動かしながら HUD・ミニマップ・チャット欄も操作したい場合に使用:

void AMyPlayerController::ShowInventory()
{
    InventoryWidget = CreateWidget<UUserWidget>(this, InventoryClass);
    InventoryWidget->AddToViewport();

    FInputModeGameAndUI InputMode;
    InputMode.SetWidgetToFocus(InventoryWidget->TakeWidget());
    InputMode.SetLockMouseToViewportBehavior(EMouseLockMode::LockOnCapture);
    InputMode.SetHideCursorDuringCapture(false);
    SetInputMode(InputMode);

    bShowMouseCursor = true;
}

Lock Mouse To Viewport(カーソル拘束)

EMouseLockMode意味
DoNotLockカーソルがウィンドウ外に出てもよい
LockOnCaptureマウスクリック時のみウィンドウ内に拘束
LockAlways常時ウィンドウ内に拘束
LockInFullscreenフルスクリーン時のみ拘束

典型シナリオ別の書き分け

場面Set Input ModeShow Cursor備考
タイトル画面UI OnlyTrueBeginPlay で適用
ゲーム開始Game OnlyFalsePossess 時 / レベル遷移時
ポーズメニューUI OnlyTrue+ SetGamePaused(true)
インベントリGame And UITrue背景でゲーム継続
会話ウィンドウUI OnlyTrue移動を止める場面
HUD のみGame OnlyFalseHUD は入力不要なので

Show Mouse Cursor との関係

Set Input Mode は入力の振り分けを決めるだけで、カーソル表示は別フラグです:

// PlayerController のメンバ変数
bShowMouseCursor = true;       // カーソル表示
bEnableClickEvents = true;     // クリック判定
bEnableMouseOverEvents = true; // ホバー判定

Blueprint では Set Show Mouse Cursor ノード(Player Controller のメンバ関数)を使います。

BeginPlay で初期化

void AMyPlayerController::BeginPlay()
{
    Super::BeginPlay();

    // タイトル画面から始まる場合
    if (TitleWidgetClass)
    {
        TitleWidget = CreateWidget<UUserWidget>(this, TitleWidgetClass);
        TitleWidget->AddToViewport();

        FInputModeUIOnly InputMode;
        InputMode.SetWidgetToFocus(TitleWidget->TakeWidget());
        SetInputMode(InputMode);

        bShowMouseCursor = true;
    }
}

よくあるトラブル

Q: UI Only にしたのに Tab / 矢印キーが効かない
A: Widget to Focus を指定していない。InputMode.SetWidgetToFocus(MyWidget->TakeWidget()) を必ず呼ぶ。

Q: Game And UI でゲーム入力が UI に吸われる
A: Widget の各ボタンの IsFocusable を確認。フォーカスが Widget にあるとキーが UI に流れる。クリック以外の入力を Game 側に通したいなら IsFocusable を Off。

Q: マウスが画面外に行ってしまう
A: SetLockMouseToViewportBehavior(EMouseLockMode::LockAlways) でウィンドウ内に拘束。

Enhanced Input との併用

UE5 標準の Enhanced Input でも Set Input Mode はそのまま有効。Input Mapping Context との組み合わせで「メニュー時はメニュー用 Context、ゲーム中はゲーム用 Context」と切り替えるとさらに整理できます:

void AMyPlayerController::ShowMenu()
{
    if (auto Subsystem = ULocalPlayer::GetSubsystem<UEnhancedInputLocalPlayerSubsystem>(GetLocalPlayer()))
    {
        Subsystem->RemoveMappingContext(GameplayContext);
        Subsystem->AddMappingContext(MenuContext, 0);
    }

    FInputModeUIOnly InputMode;
    InputMode.SetWidgetToFocus(MenuWidget->TakeWidget());
    SetInputMode(InputMode);
    bShowMouseCursor = true;
}

FAQ

Q: SetInputMode はいつ呼ぶ?
A: 画面状態が切り替わる瞬間。タイトル → ゲーム開始時 / Esc で一時停止時 / インベントリ開閉時 など。状態管理を関数化(EnterGameplay / EnterMenu)すると保守しやすい。

Q: マルチプレイヤーで気をつけることは?
A: Set Input Mode はクライアントローカルの設定。リッスンサーバーホストでもクライアント側のコントローラ単位で呼ぶ。サーバー側で呼んでも反映されない。