ウィンドウの表示モードとタイトルで呼び出し可能な UI のダイアログ
このトピックでは、PC のウィンドウ表示モードを処理し、タイトル呼び出し可能 UI (TCUI) ダイアログを正常に表示するために必要な特別な考慮事項について説明します。
TCUI を表示できる API を呼び出す前には、ゲームでゲーム ウィンドウが表示された状態にしておくことをお勧めします。 また、ゲーム ウィンドウでは、排他的全画面表示ではなく、全画面表示のウィンドウ化/フチなしウィンドウ モード、またはウィンドウ化/非最大化モードを使用してください。
アプリやゲームのカスタム解像度ではなく、ネイティブのディスプレイ解像度でゲームを実行できる必要があります。 TCUI ダイアログが表示されている場合、一部のテクノロジ (DirectX 9 など) の解像度の変更は正常に処理されません。
さらに、一部のミドルウェア エンジンとラッパー、および DirectX 9 では、表示される TCUI ダイアログにフォアグラウンドのフォーカスが移動すると、全画面表示のゲーム ウィンドウが自動的に最小化されます。 このユーザーにとって望ましくない動作を回避するために、TCUI ダイアログを表示する際にウィンドウの最小化が明示的に拒否されます。 詳細については、後述の「ゲーム ウィンドウの最小化の禁止」セクションを参照してください。
DirectX 以外のグラフィック テクノロジを使用しているゲームの場合、次に示すように、さまざまな推奨ベスト プラクティスがあります。
ゲーム タイトルが OpenGL または Vulkan を使用している場合は、デスクトップ所有のウィンドウ境界を示す "ウィンドウ化" モードが必要です。これにより、TCUI ダイアログはゲーム中にレンダリングされます。 これは、ビデオ カード ドライバー実装に基づいて、どのような種類の全画面モードで実行されているゲームでも、デスクトップ ウィンドウ マネージャーの関与なしでレンダリングされる可能性があるためです。 これにより、TCUI ダイアログはゲーム ウィンドウに表示されなくなります。
他のグラフィックス テクノロジについては、Xbox サポート担当者にお問い合わせください。
ゲーム ウィンドウの最小化の禁止
一部のミドルウェア エンジンや階層化システム (Unity や Simple DirectMedia Layer (SDL) など) では、TCUI ダイアログでフォアグラウンドのフォーカスが失われると、ゲームの全画面表示が自動的に最小化されます。
このような動作を防ぐために、ゲーム ランタイムは CBTProc を使用して、ゲーム ウィンドウを最小化するあらゆる要求を拒否します。 ゲーム ランタイムがこのパターンを適用するのは、オーバーレイが全画面表示の DirectX のゲーム ウィンドウにレンダリング可能で、TCUI ダイアログが表示されることを検出した場合のみです。
また、ゲーム ランタイムは、TCUI ダイアログを表示する前に、スタイル変更ウィンドウ メッセージを傍受し、変更します。これにより、ゲーム ウィンドウで枠線やタイトル バーがレンダリングされなくなります。 以前のスタイルに存在していない場合、WS_OVERLAPPEDWINDOW グループ内のすべてのスタイルは、スタイル変更に適用されません。 この変更は、TCUI ダイアログの有効期間にのみ実装されます。
TCUI ダイアログを使用する DirectX 9 の考慮事項
DirectX 9 のゲームは、このトピックの「ゲーム ウィンドウの最小化の禁止」で説明したように最小化されることはありませんが、TCUI ダイアログが表示されると、フォアグラウンド フォーカスが失われます。 全画面を実行しているときにゲーム ウィンドウを最小化するユーザーに対して対応するのとまったく同じように、ゲームはこのようなフォーカス喪失を適切に処理できるように準備しておく必要があります。
TCUI ダイアログを使用する Unity の考慮事項
TCUI ダイアログを表示するゲームでは、"Application.runInBackground" を true に設定することをお勧めします。