Version: Unity 6.0 (6000.0)
言語 : 日本語
ランタイム UI の使用を開始する
Create a panel

ゲームビューでの UI の描画

UI を描画し、ゲームビューでユーザーからの入力に反応するには、UI Document コンポーネントを使用して UXML ドキュメントを Panel Settings (パネル設定) アセットに接続します。

すべての UI Document コンポーネントは、UI を定義する UXML ドキュメントと、それを描画するパネル設定を参照します。1 つの Panel Settings アセットに複数の UXML ドキュメントを接続できます。

パネルの設定

Panel Settings アセットによって、シーン内のパネルが定義されます。パネルは、UI 階層がアタッチされるルートビジュアル要素を提供し、ランタイムにシーンに UI を描画します。Panel Settings アセットの設定方法によって、UI の描画方法が決まり、入力への UI の反応も決定します。例えば、視覚的に前面に表示されるパネルは、背面に表示されるパネルよりも先に、ユーザーからのクリックをインターセプトします。

Panel Settings (パネル設定) アセットの設定により、以下を行うことができます。

  • スケールと解像度のコントロール
  • デフォルトスタイルの適用
  • レンダーテクスチャへの UI の表示
  • パネルのソート順序の設定

パネルの設定には以下を行います。

  1. プロジェクトで Assets > Create > UI Toolkit > Panel Settings を選択し、Panel Settings アセットを作成します (まだ作成していない場合)。
  2. Panel Settings アセットの Inspector ウィンドウで、Panel Settings プロパティを設定します。

UI をパネルに接続する

1 つのパネルで、複数の UXML Document コンポーネントから UI を表示できます。各 UI Document には、UXML ドキュメントのレンダリング順序を設定する Sort Order (ソート順) プロパティがあります。

  • 子の UI Document コンポーネントは、親の UI Document コンポーネントの上に描画されます。
  • 階層の同じレベルにある UI Document コンポーネントは、そのソート順に従って順番に描画されます。

複数の UXML ドキュメントをパネルに接続するには、以下のようにします。

  1. UI をホストするゲームオブジェクトを選択または作成します。

  2. Component > UI Toolkit > UI Document を選択して、UI Document コンポーネントを追加します。

  3. UIDocument の Inspector ウィンドウで以下を行います。

    • Panel Settings を Panel Settings に設定して、UI を表示します。
    • Source を設定して、表示する UI を含む UXML ドキュメントにします。
    • Sort Order を設定して、UI Document コンポーネントを数値が小さい順に描画されるようにします。
  4. 各 UXML ドキュメントに対して、同じ手順を繰り返します。

ノート: 同じパネル設定に複数の UI Documentコンポーネントがアタッチされている場合、これらのドキュメントはすべて共通のフォーカスナビゲーションコンテキストを持ちます。ドキュメントにそれぞれ個別のパネル設定がある場合、隣り合わせに並べても、ナビゲーションが自動的に移動することはありません。ナビゲーションを 1 つのドキュメントからもう 1 つにジャンプさせるには、Panel Settings の focusController を、ジャンプ先の UI Document コンポーネントの FocusController に設定する必要があります。

UI Document コンポーネントのライフサイクル

UI Document コンポーネントのソースとなる UXML ドキュメントは、コンポーネントに OnEnable() メソッドを呼び出した時に読み込まれます。ビジュアルツリーが必ず正しく読み込まれるようにするために、OnEnable() メソッド内のコントロールと相互作用するロジックを追加します。つまり、UXML ドキュメントからビジュアル要素を安全に参照するには、スクリプトが OnEnable()OnDisable() に応答する必要があります。

UI Document コンポーネントは、OnEnable() メソッドと OnDisable() メソッドに応答するときに、そのコンテンツを消去します。このアプローチでは、UI Document がすぐに再利用しない UI 要素を削除し、関連するリソースを効果的に消去します。また、UI Document コンポーネントが Panel Settings アセットで割り当てられていない場合は、そのコンテンツは自動的に消去されます。

すぐに再利用される可能性が高い UI 要素や、初期化ペナルティを回避するために迅速に表示する必要がある UI 要素を非表示にするには、UIDocument.rootVisualElementdisplaynone に設定します。また、これを使用して、大きな UI 階層の一部である UI 要素のコンポーネントを隠すこともできます。

追加リソース

ランタイム UI の使用を開始する
Create a panel