UDN
Search public documentation:

UIEditorUserGuideJP
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > ユーザーインターフェイスとHUD > UI エディタ ユーザー ガイド

UI エディタ ユーザー ガイド


UI システムおよびその機能のサポートは打ち切られました。現在サポートされているユーザーインターフェースシステムに関する情報については、 Scaleform のドキュメントをご参照ください。

はじめに

UI エディタは、Unreal Engine 3 の UI System のユーザー インターフェースの構築と編集に使用します。このエディタには、ウィジェットを配置および変形させてシーンをレイアウトするためのツールが用意されており、シーンを視覚的にプレビューすることもできます。

注意: 新しい Scaleform GFx との統合のため、エンジンの新しいビルドでは UI System が廃止されています。

UI エディタの概要

UI エディタの起動

UI エディタは、任意の UI シーン アセットをダブルクリック、またはコンテント ブラウザで UI シーン アセットを右クリックすることで起動できます。このいずれの操作でも、UI エディタが起動して、その特定の UI シーン アセットが開き、編集が可能になります。

エディタのレイアウト

uieditor.jpg

  1. メニューバー
  2. ツール バー
  3. プレビュー ペイン - UI シーンのプレビューが表示されます。これは、シーンをレイアウトするためのキャンバスとして機能します。
  4. - シーン内で選択されているアイテムのプロパティが表示されます。
  5. シーン ツールペイン - シーン内のアイテムの階層ツリー、および現在使用されているスキンがタブ形式で表示されます。
  6. ドッキング ペイン - 現在のウィジェットのドッキング プロパティを編集できます。
  7. ポジション ペイン - 現在のウィジェットのポジション プロパティを編集できます。
  8. ステータス バー - マウスやシーンなどの情報が表示されます。

メニュー バー

ファイル

  • Close(閉じる) - シーン エディタを閉じます。

編集

  • Undo (元に戻す) - 最後に実行した処理を取り消します。
  • Redo (繰り返す) - 最後に Undo (取り消し)した処理を再度実行します。
  • Cut (カット) - 選択されているアイテムをカットしてクリップボードにコピーします。
  • Copy (コピー) - 選択されているアイテムをクリップボードにコピーします。
  • Paste (ペースト) - クリップボードの内容を、対象のシーン自体の「子」としてシーンに貼り付けます。
  • Paste As Child (子としてペースト) - クリップボードの内容を、選択されているウィジェットの「子」としてシーンに貼り付けます。
  • Rename Selected Widgets (選択されているウィジェットの名前を変更) - 選択されているウィジェットの名前を変更するダイアログが表示されます。
  • Delete Selected Widgets (選択されているウィジェットを削除) - 選択されているウィジェットをシーンから削除します。
  • Bind selected widgets to datastore (選択されているウィジェットをデータ ストアにバインド) - 選択されているウィジェットで選択されているデータ プロパティを、データ ストア ブラウザで選択されているデータ ストアにバインドします。データ ストアが選択されていない場合は、使用できません。
  • Data Store Browser (データ ストア ブラウザ) - データ ストア ブラウザ が開きます。
  • Modify Default UI Event Alias Key Bindings... (UI イベント エイリアスのデフォルト キー バインドを編集) - デフォルト キー バインド編集の概要 ダイアログで、デフォルトのキー バインディングを編集します。

ビュー

  • Reset View (表示のリセット) - シーン プレビューの左上コーナーがビューポートの左上コーナーと一致するように、プレビュー ペイン内のプレビューを配置します。
  • Center On Selected Widgets (選択したウィジェットに合わせて配置) - プレビュー ペイン内のシーン プレビューが、選択されているウィジェットに中央を合わせて配置されます。
  • Draw Background (背景の表示) - プレビュー ペインの背景画像の表示を切り替えます。
  • Draw Grid (グリッドの表示) - プレビュー ペインのグリッド表示を切り替えます。
  • Draw Wireframe (ワイヤーフレームの表示) - プレビュー ペインでの、ワイヤーフレームを使用した 3D メッシュのレンダリングを切り替えます。
  • Viewport Outline (ビューポートのアウトライン) - 1 ピクセル幅の青いアウトラインを表示します。これは、プレビュー ペインでのビューポートのサイズを表します。
  • Container Outline (コンテナのアウトライン) - 1 ピクセル幅の緑のアウトラインを表示します。これは、ガターを適用した後のビューポートのサイズを表します。
  • Selection Outline (選択アウトライン) - 選択されているアイテムの周囲に、太い青のアウトラインを表示します。
  • Combine Multi-Selection Outlines (複数選択アウトラインの統合) -
  • Show Dock Handles (ドッキングハンドルの表示) - 選択されているアイテム上に、各種ドッキング ロケーションのハンドルを表示します。
  • Draw Title Safe Regions (タイトル安全表示範囲の表示) - テレビ上に正しく表示されるようにウィジェットを配置するための範囲の表示を切り替えます。

スキン

  • Save Selected Skin (選択したスキンを保存) - 選択されているスキンを含むパッケージを保存します。
  • Edit Selected Skin (選択したスキンを編集) - 選択されているスキンが スキン エディタ ダイアログに表示され、これを編集することができます。
  • Load Existing Skin (既存スキンをロード) - ファイル ブラウザが開き、スキンを含むパッケージをロードできます。
  • Create New Skin (スキンの新規作成) - スキンの新規作成 ダイアログが開き、選択されているスキンをベースとして新規スキンを作成できます。

シーン

  • Refresh Scene (シーンの更新) - 変更内容をすべて反映してシーンが更新されます。これにより、ドッキング スタックの再ビルド、ウィジェット ポジションの回転、スタイルの再適用などが反映されます。

ウィンドウ

  • Properties (プロパティ) - プロパティペインの表示を切り替えます。
  • Positioning (ポジション) - ポジション ペインの表示を切り替えます。
  • Docking (ドッキング) - ドッキング ペインの表示を切り替えます。
  • Scene Tools (シーンツール) - シーン ツール ペインの表示を切り替えます。

ツール バー

アイコン 説明
toolbar_viewportoutline.jpg 1 ピクセル幅の青いアウトラインを表示します。これは、プレビュー ペインでのビューポートのサイズを表します。
toolbar_containeroutline.jpg 1 ピクセル幅の緑のアウトラインを表示します。これは、ガターを適用した後のビューポートのサイズを表します。
toolbar_selectionoutline.jpg 選択されているアイテムの周囲に、太い青のアウトラインを表示します。
toolbar_selectionhandles.jpg 選択されているアイテムのサイズを変更するためのハンドルが表示されます。注意:ハンドルが表示されていない状態でも、サイズを変更することができます。
toolbar_multioutline.jpg  
toolbar_dockhandles.jpg 選択されているアイテム上に、各種ドッキング ロケーションのハンドルを表示します。
toolbar_viewportsize.jpg プレビュー ペインで使用するビューポートのサイズを選択します。
toolbar_viewportgutter.jpg ビューポートのガターのサイズを設定します。ここでは、ビューポート周囲の安全範囲の境界として使用するピクセル数を指定します。
toolbar_centerselected.jpg プレビュー ペインで選択されているアイテムを中央に配置します。
toolbar_aligntop.jpg 選択されているオブジェクトの上エッジを、ビューポートの上エッジに合わせます。
toolbar_alignmiddle.jpg 選択されているオブジェクトの中央を、その縦座標に合わせます。
toolbar_alignbottom.jpg 選択されているオブジェクトの下エッジを、ビューポートの下エッジに合わせます。
toolbar_alignleft.jpg 選択されているオブジェクトの左エッジを、ビューポートの最左エッジに合わせます。
toolbar_aligncenter.jpg 選択されているオブジェクトの中央を、その横座標に合わせます。
toolbar_alignright.jpg 選択されているオブジェクトの右エッジを、ビューポートの最右エッジに合わせます。
toolbar_justifyleft.jpg 選択されているアイテムのテキストを左寄せします。
toolbar_justifycenter.jpg 選択されているアイテムのテキストを中央寄せします。
toolbar_justifyright.jpg 選択されているアイテムのテキストを右寄せします。
toolbar_justifytop.jpg 選択されているアイテムのテキストを上寄せします。
toolbar_justifymiddle.jpg 選択されているアイテムのテキストを中央寄せします。
toolbar_justifybottom.jpg 選択されているアイテムのテキストを下寄せします。
toolbar_selectiontool.jpg アイテムの選択と変形に、選択ツールを使用可能にします。
toolbar_focuschaintool.jpg シーン内のアイテムのフォーカスの順番の決定に、フォーカス チェーン ツールを使用可能にします。また選択したアイテムには、フォーカス チェーン ハンドルも表示されます。
toolbar_editwidgettool.jpg 使用不能
toolbar_buttonwidget.jpg ボタン ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、ボタン ウィジェットが新規作成されます。
toolbar_editboxwidget.jpg 編集ボックス ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、編集ボックス ウィジェットが新規作成されます。
toolbar_imagewidget.jpg 画像ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、画像ウィジェットが新規作成されます。
toolbar_labelwidget.jpg ラベル ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、ラベル ウィジェットが新規作成されます。
toolbar_labelbuttonwidget.jpg ラベル ボタン ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、ラベル ボタン ウィジェットが新規作成されます。
toolbar_togglebuttonwidget.jpg 切り替えボタン ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、切り替えボタン ウィジェットが新規作成されます。
toolbar_checkboxwidget.jpg チェックボックス ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、チェックボックス ウィジェットが新規作成されます。
toolbar_listwidget.jpg リスト ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、リスト ウィジェットが新規作成されます。
toolbar_panelwidget.jpg パネル ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、パネル ウィジェットが新規作成されます。
toolbar_sliderwidget.jpg スライダ ウィジェット作成ツールを有効にします。プレビュー ペイン内をクリックしてドラッグすると、スライダ ウィジェットが新規作成されます。
toolbar_previewstate.jpg 選択されているアイテムをプレビュー ペインでプレビューする際の状態を選択します。アイテムが選択されていない場合は、使用できません。
toolbar_previewplatform.jpg プレビュー ペインでプレビューするプラットフォームを選択します。
toolbar_splitscreenlayout.jpg 分割画面レイアウトモードを選択します。

プレビュー ペイン

previewpane.jpg

プレビュー ペインでは、シーンを視覚的にプレビューできると同時に、目で確認しながらシーンをレイアウトできます。一般的に使用されるウィジェットは、プレビュー ペインでの操作で作成でき、すべてのウィジェットは、プレビュー ペインを使用して簡単に配置できます。既存のウィジェットは、移動、回転、スケール (拡大縮小)することができます。ドッキングやフォーカス チェーンなどのその他の要素も、ここで設定することが可能です。

プロパティ ペイン

propertiespane.jpg

プロパティ ペインは、 UnrealEd の標準的なプロパティ ウィンドウです。ウィジェットが選択されている場合は、ウィジェット固有のプロパティ (表示形式やサウンドなど) がここに表示され、何も選択されていない場合はシーン固有のプロパティが表示されます。

シーン ツール ペイン

scenetoolspane.jpg

シーン ツール ペインでは、シーン内のエレメントやスキンに関する操作を行います。このペインには、以下の 2 つのタブが用意されています。

シーン

[Scene] (シーン) タブは、シーン内のアイテムが階層ツリー形式で表示されます。 UIScene 自体がこのツリーのルートとなり、シーンに追加されたすべてのウィジェットは、そのシーンまたはほかのウィジェットの子となります。ウィジェットは、このツリー内またはその周囲をドラッグして選択することによってその親を変更することができます。ウィジェットを右クリックすると、そのウィジェットを対象とした コンテキスト メニュー が表示されます。

シーンのコンテキスト メニュー

scenecontextmenu.jpg

  • UnrealKismet Editor (UnrealKismet エディタ) - 選択されているアイテムに対して UI Kismet エディタが開きます。これは、1 つのウィジェットが選択されている場合にのみ使用できます。
  • Enable/Disable Widget Event Aliases (ウィジェット イベント エイリアスの切り替え) - 入力イベント エイリアスの切り替え ダイアログが表示されます。これは、1 つのウィジェットが選択されている場合にのみ使用できます。
  • Docking Editor (ドッキング エディタ) - ドッキング エディタ が開きます。
  • Place Widget (ウィジェットの配置) - 既存の任意タイプの新規ウィジェットを配置できます。このウィジェットは、ツール バーに用意されている一般的なタイプに限定されません。
  • Place Archetype (原型の配置) - コンテント ブラウザで選択されている原型のインスタンスを配置します。これは、原型が選択されている場合にのみ使用できます。
  • Select Style (スタイルの選択) - ロードされている任意のスキンから選択されているウィジェットに適用する新規スタイルを選択します。これは、1 つのウィジェットが選択されている場合にのみ使用できます。
  • Edit Style (スタイルの編集) - 選択されているウィジェットに適用されているスタイルに対して、 スタイルの編集ダイアログ が開きます。これは、1 つのウィジェットが選択されている場合にのみ使用できます。
  • Data Store Browser (データ ストア ブラウザ) - データ ストア ブラウザ が開きます。これは、それ以前にデータ ストア ブラウザが開かれていない場合にのみ表示されます。
  • Bind selected widgets to datastore (選択されているウィジェットをデータ ストアにバインド) - 選択されているウィジェットで選択されているデータ プロパティを、データ ストア ブラウザで選択されているデータ ストアにバインドします。データ ストアが選択されていない場合は、使用できません。これは、データ ストア ブラウザが開かれたことがある場合にのみ表示されます。
  • Clear datastore binding for selected widgets (選択したウィジェットに対するデータ ストアのバインドをクリア) - 選択されているウィジェットで選択されているデータ プロパティの、データ ストアに対するすべてのバインドをクリアします。
  • Convert Position (ポジションの変換) - 選択されているサイドに対してウィジェットで使用されている ポジション メソッド を変更します。

convertposition_types.jpg

  • Align To Viewport (ビューポートに合わせる) - 選択したアライン方法で、選択されているウィジェットを合わせます。
  • Change Parent (親の変更) - [Change Parent] (親の変更)ダイアログが開き、選択されているウィジェット (およびそのすべての子) の配置対象となる別の親を選択できます。原型のインスタンス内にあるアイテムに対しては使用できません。

changeparent.jpg

  • Reorder Widget (ウィジェットの順番変更) - 階層内のウィジェットを上下に移動して、その親を変えることなく、順番を変更できます。複数のウィジェットが選択されている場合は、複雑な結果になります。

reorderwidget.jpg

  • Cut (カット) - 選択されているウィジェットをカットし、クリップボードにコピーします。
  • Copy (コピー) - 選択されているウィジェットをクリップボードにコピーします。
  • Paste (ペースト) - クリップボードで選択されているウィジェットを、シーン (ツリーのルート) の子としてペーストします。
  • Paste As Child (子としてペースト) - クリップボードで選択されているウィジェットを、選択されているウィジェットの「子」として貼り付けます。
  • Rename (名前の変更) - 選択されているウィジェットの名前を変更できます。
  • Delete (削除) - 選択されているウィジェットをシーンから削除します。
  • Create Archetype (原型の作成) - 選択されているウィジェット (パッケージ、グループ、名前を含む) から新しい原型を作成し、作成した原型でそのウィジェットを上書きします。
  • Dump Property Values (プロパティ値のダンプ) - 選択されているウィジェットのプロパティを、ログファイルに出力します。

スタイル

[Styles] (スタイル)タブでは、現在の UI シーンのスキンの変更、既存スキンのロード、スキンの新規作成のほか、選択されているスキンに含まれるすべてのスタイルを表示することができます。スタイルを右クリックすると、そのスタイルを対象とした コンテキスト メニュー が開きます。

スタイル コンテキスト メニュー

stylescontextmenu.jpg

  • Edit Style (スタイルの編集) - 選択されているスタイルを対象とした スタイルの編集ダイアログ ダイアログが開きます。
  • Create New Style (スタイルの新規作成) - 現在のスキン内に新規スタイルを作成するための スタイルの新規作成 ダイアログが開きます。
  • Create Style From Selected (選択項目からスタイルを作成) - 選択されているスタイルを新規スタイルのテンプレートとして使用するための スタイルの新規作成 ダイアログが開きます。
  • Delete Style (スタイルの削除) - 選択されているスタイルを現在のスキンから削除します。

ドッキング ペイン

dockingpane.jpg

ドッキング ペインは、ウィジェット間のドッキング リレーションを設定する際に使用します(プレビュー ペインでの操作でも設定可能)。ドッキングおよびドッキング エディタに関する詳細は、ドッキング? セクションを参照してください。

ポジション ペイン

positioningpane.jpg

ポジション ペインは、選択されているウィジェットのポジション、スケール タイプ、サイズを変更する際に使用します。このペインの操作方法の詳細は、 ポジションとスケール セクションを参照してください。

ステータス バー

statusbar.jpg

ステータス バーには、プレビュー ペイン内でのマウスの現在位置、選択されているアイテム、メニュー項目のツールチップなど、各種の情報が表示されます。

draggrid.jpg

ステータス バーには、プレビュー ペインのドラッグ グリッド設定も用意されています。

操作

マウス操作

キーボド操作

Ctrl+Up [Scene Tools] (シーン ツール) パネルの [Scene] (シーン) タブ内で選択されているウィジェットの順番を変更
Ctrl+Down [Scene Tools] (シーン ツール) パネルの [Scene] (シーン) タブ内で選択されているウィジェットの順番を変更

ホット キー

シーン エディタの使用方法

用語

  • Scene (シーン) ウィジェット グループのもっとも外側のコンテナ。シーンには複数のウィジェットが含まれ、シーンとウィジェットとのリレーションは、マップと、マップ上に配置されたアクタとのリレーションに非常によく似ています。このため、すべてのウィジェットは、シーンに含まれている必要があります。
  • Widget (ウィジェット) シーンに配置可能な、特定の動作、表示形態、ステータスを持つオブジェクト、発生可能なイベント、アクション。
  • Event (イベント) ウィジェットが反応することができるシグナル。イベントには、ボタンなどの入力イベント、リモートシステムからのデータ受信などのシステム イベントなどがあります。イベントは通常、特定タイプのウィジェットにバインドされていません。プログラマーはウィジェットに対して発生可能なイベントを選択でき、アーティストは適用するイベントを決定できます。
  • Action (アクション) 外部イベントに対してウィジェットの処理を実行します。アクションはプログラマーが作成し、デザイナーが UI エディタを使用してウィジェット イベントにバインドします。
  • State (ステータス) 1 つのウィジェットまたはシーンの動作、表示形態、発生可能なイベント、アクションを決定します。 すべてのウィジェットには最低でも 2 つのステータス(有効/無効)がありますが、必要に応じて追加することも可能です。ウィジェットの一般的なステータスには、フォーカス、アクティブ(マウスオーバーなど)、押下、ドラッグ(ドラッグ アンド ドロップなど)、選択などがあります。
  • Sequence (シーケンス) ウィジェット/シーンのステータス範囲内のアクション(ロジックなど)に関連付けられているイベントのセット。イベント ロジックは、ウィジェットやイベントの特定ステータスの変化に応じて、範囲内や範囲外になります。
  • Style (スタイル) ウィジェット表示形態の変更方法に関する情報が含まれます。
  • Skin (スキン) スタイルの集合体。

    スタイルを作成すると、固定の STYLE_ID が割り当てられます。特定ウィジェットのすべてのスタイルは、1 つの Unreal パッケージ ファイルに格納されます。このパッケージのルート オブジェクトは、 UISkin オブジェクトとなります。スタイルで必要となるリソースは、スキン ファイルに格納することができますが、別のパッケージに収録することもできます。

    ゲーム UI には、デフォルトのスキンとなる UISkin パッケージが最低でも 1 つ必要となります。 UISkin は複数同時に有効にすることはできず、すべてのカスタム UISkin はこのデフォルトの UISkin がベースなります。カスタム UISkin では、スタイルを完全に変更することもできます。その際は、変更対象のスキンと同じ STYLE_ID を持つ新規スタイルを作成し、その STYLE_ID の StyleLookupTable にスキンを配置します。カスタム UISkin によって明確に変更されていないすべてスタイルは、デフォルト スキンを継承します。

    ウィジェットはデフォルトで、カスタム UISkin に含まれるカスタム UIStyle に自動的にマッピングされますが、ユーザーが、まったく異なるスタイルを特定のウィジェットに割り当てることもできます。この場合、そのスキンセット、およびカスタム UISkin をベースとしたすべての UISkin の、そのウィジェットのスタイルのみが変更されます。カスタム UISkin は階層構造にすることもできるため、UISkin は、別の UISkin をベースとすることも可能です。
  • Data Store (データ ストア) ゲームで UI がデータを参照する方法。データ ストアにはライフタイム管理が含まれているため、UI は、安全な方法でゲームデータを参照できます。データ ストアは、固定(UI インタラクションオブジェクトに直接関連付けられ、すべてのウィジェットが利用可能)、または一時的(現在のシーンに関連付けられ、そのシーンに含まれるウィジェットのみが利用可能)のいずれかの形式にすることができます。固定データ ストアでは、情報(すべてのゲームタイプやキャラクタの UI データなど)をトラックすることができます。一時データ ストアでは、UI 値ウィジェットに入力された名前などのデータをトラックすることができます。データ ストアでは、固定情報(すべてのゲーム タイプの名前など)や、変動情報(現在のゲーム タイプの名前など)を提供することができます。
  • Bound Navigation (バインド ナビゲーション) シーンのフォーカスチェーンに固定されていないウィジェット間のナビゲーションを意味します。バインド ナビゲーションは、 入力イベント エイリアス?NextControl(次のコントロール) および PreviousControl(前のコントロール) にバインドされている入力の結果として発生します。
  • Unbound Navigation (非バインド ナビゲーション) シーンのフォーカスチェーンで定義されていない動作に固定されていないウィジェット間のナビゲーションを意味します。非バインド ナビゲーションは、 入力イベント エイリアス?NavFocusLeft(フォーカスを左に移動)NavFocusRight(フォーカスを右に移動) 、 [#NavFocusUpAlias][NavFocusUp(フォーカスを上に移動)]] 、 NavFocusDown(フォーカスを下に移動) にバインドされている入力の結果として発生します。

シーンの作成

UnrealEd の コンテント ブラウザFile (ファイル) > New (新規作成)を選択してパッケージ名を入力または選択し、シーン名を入力してファクトリ設定として UIScene を選択し、[ OK ] を選択します。

UnrealUI_SceneCreate.jpg

ウィジェットの使用方法

ウィジェットの作成

ウィジェットは、3 つの方法でシーン内に作成することができます。

1 つ目の方法は、 UIScene エディタ ウィンドウ上部に用意されているツール バーの [Scene] (シーン)ボタンをクリックしてウィジェット作成ツールを利用する方法です。ウィジェットは、適切なウィジェットツールを選択し、シーン ウィンドウ内でクリックおよびドラッグするだけで簡単に作成できます。

またウィジェットは、シーン ウィンドウを右クリックしてコンテキスト メニューから [Place Widget] (ウィジェットの配置)を選択、または、[Scene Tools] (シーンツール)パネルの [Scene] (シーン)タブに用意されている UI シーンのアイコン(https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_Tools_SceneIcon.jpg)を右クリックし、コンテキスト メニューから [Place Widget] (ウィジェットの配置)を選択することによっても作成できます。コンテキスト メニューを使用するこの 2 つの方法には、作成時にウィジェットのサイズを指定できないという欠点があります。しかし一方で、ツール バーに用意されているデフォルトタイプのみではなく、多くのウィジェットタイプから選択できるという利点もあります。

UnrealUI_Phase_1_WidgetCreation1.jpg

ウィジェットの移動

作成したウィジェットは、選択ツール(https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_SelectionTool.jpg)で選択し、ウィジェットのエッジ (サイズ変更ハンドル間の任意の場所) をドラッグすることによって移動できます。その際はマウス ポインタが十字 (https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_Widget_MoveIcon.jpg) に変化し、ポインタが適切なドラッグポイントに合うと、ウィジェットの外周の色が変化します。

UnrealUI_Phase_1_WidgetCreation4.jpg

ウィジェットのサイズ変更

ウィジェットのサイズを変更する際は、選択ツール (https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_SelectionTool.jpg) でウィジェットを選択し、四角形のサイズ変更ハンドル (ウィジェット外周の各コーナーおよび各辺の中央に表示) をドラッグします。サイズ変更ハンドル上にマウス ポインタを合わせると、ポインタが、ハンドルと位置が合っていることを意味する二重矢印アイコンに変化します。

UnrealUI_Phase_1_WidgetCreation5.jpg

ウィジェットの詳細編集

以下の編集ウィンドウは、 [Scene] (シーン)エディタのメイン メニュー バーの [Window] (ウィンドウ)サブメニューからアクセスします。

ポジションとスケール

ウィジェットのポジションとスケールの微調整は、Positioning Editor(ポジション エディタ)で行います。ポジション エディタには、ウィジェットの 4 つの面のポジションを調節するため機能、または数値を使ってシーンを単独で調節するための機能が用意されています。ポジション エディタでは、シーンやウィジェットの幅と高さのピクセル数も調節できます。

シーンとウィジェットとのリレーション、またはウィジェットとその子ウィジェットとのリレーションにより、ポジションやスケールが変化する場合があります。子ウィジェットを持つウィジェットを例にすると、親ウィジェットの 1 つの面のポジションを調節した場合、変更した面の方向にウィジェットがスケールされるだけではなく、子ウィジェットも同じ方向に同じ比率でスケールされます。このリレーションは、シーン内のすべてのウィジェットがそのシーンの子となっている状態の、ウィジェットとシーンとの間にも存在します。

UnrealUI_Phase_1_WidgetPosition1.jpg UnrealUI_Phase_1_WidgetPosition2.jpg

選択されているシーンまたはウィジェットの面に関する数値は、各面に用意されている [Scale Type] (スケール タイプ)キャプションのドロップダウン メニューから選択できる 6 つの形式で表すことができます。実際これら 6 つの表示形式は、ビューポート、シーン、オブジェクトの主な 3 つの情報をピクセルと比率で表したものとなっています。ピクセルと比率は、限定的ピクセルオフセット、または、状況によって必要となる比率をベースとした相対比率を維持できるようにするための情報です。このいずれかのスケール タイプを選択すると、対応する面の [Face Value] (面の数値)キャプションに表示される数値が変化します。スケール タイプには、以下のタイプがあります。

  • PixelViewport (ピクセル ビューポート)- このスケール タイプを使用した面の数値は、ビューポートの左上コーナーのビューポート原点(0,0)からの、対象面の絶対ピクセル数となります。ビューポート フレームはビューポートの範囲を定義するもので、シーン ビューポートでは青い四角形で表示されます。
  • PixelScene (ピクセル シーン)- このスケール タイプを使用した上面と左面の面の数値は、シーンの左上コーナーのシーン原点(0,0)からの、対象面の絶対ピクセル数となります。下面と右面の面の数値は、その対角面からの距離(ピクセル)と同じになり、ウィジェットの幅と高さとも同じになります。シーン フレームはシーンの範囲を定義するもので、シーン ビューポートでは緑の四角形で表示されます。デフォルトでは、シーンのフレームのサイズはビューポート フレームと同じになるため、その結果として、ビューポート フレームの青い四角形で囲まれている場合があります。
  • PixelOwner (ピクセル オーナー)- このスケール タイプを使用した上面と左面の面の数値は、その親の左上コーナーからのウィジェットの対象面の絶対ピクセル数となります。下面と右面の面の数値は、その対角面からの距離(ピクセル)と同じになり、ウィジェットの幅と高さとも同じになります。選択されているウィジェットに親ウィジェットが存在しない場合はシーンがその親となり、その結果、このスケール タイプは PixelScene タイプと同じ数値となります。
  • PercentageViewport (パーセンテージ ビューポート)- このスケール タイプを使用した面の数値は、ビューポートの左上コーナーからの対象面の絶対ピクセル オフセットを、ビューポートの幅または高さ (面によって異なる) で割った比率となります。たとえば、ウィジェット左面の面の数値がゼロの場合、ウィジェットの左面は、ビューポートの左面とまったく同じになります。また同じ状況で数値が 1 の場合、ウィジェットの左面はビューポートの右面にぴったり合っていることになります。これはこの 1 という数値が、ビューポート幅の 100% のオフセットを意味するためです。
  • PercentageScene (パーセンテージ シーン)- このスケール タイプを使用した面の数値は、シーンの左上コーナーからの対象面の絶対ピクセル オフセットを、シーンの幅または高さ (面によって異なる) で割った比率となります。たとえば、ウィジェット左面の面の数値がゼロの場合、シーンの左面は、ビューポートの左面とまったく同じになります。また同じ状況で数値が 1 の場合、ウィジェットの左面はシーンの右面にぴったり合っていることになります。これはこの 1 という数値が、シーン幅の 100% のオフセットを意味するためです。
  • PercentageOwner (パーセンテージ オーナー)- このスケール タイプを使用した面の数値は、親の左上コーナーからの対象面の絶対ピクセル オフセットを、親の幅または高さ (面によって異なる) で割った比率となります。たとえば、別のウィジェットの子となっているウィジェットの左面の面の数値がゼロの場合、子ウィジェットの左面は、親ウィジェットの左面とまったく同じになります。また同じ状況で数値が 1 の場合、子ウィジェットの左面は親ウィジェットの右面にぴったり合っていることになります。これはこの 1 という数値が、親ウィジェットの幅の 100% のオフセットを意味するためです。

ドッキング

シーン内の異なるウィジェットを、相互に ドッキング させることができます。ドッキングという用語は、2 つ以上のウィジェットのエッジ間のリレーションを表わすのに使用されます。2 つのウィジェットがあり、ウィジェット 1 のエッジがウィジェット 2 のエッジにドッキングしている場合、ウィジェット 2 のドッキング エッジの位置を変更すると、ウィジェット 1 側のドッキング エッジにも変更が適用されます。このリレーションは、サンプルを使うと適確に説明できます。

ドッキング リレーションを設定するには、シーンに最低 2 つ以上のウィジェットを作成し、選択ツール (UnrealUI_SelectionTool.jpg) を使ってそれらを選択状態にする必要があります。選択ツールは、UIScene エディタ ウィンドウ上部のボタンパネルにあります。シーンに配置されたウィジェットを選択すると、各エッジの中央に 4 つの円が現れます。これらの各円は、それぞれ隣接するエッジのドッキング ハンドルです。いずれかのハンドルをクリックしてドラッグすると、ハンドルとマウス カーソルの間にリンクが描かれます。このリンクをシーン内の別のウィジェットまでドラッグすると、2 つ目のウィジェットのドッキング ハンドルが表示されます。2 つ目のウィジェットのドッキング ハンドルの 1 つまでリンクをドラッグして放すと、2 つのウィジェットのエッジがドッキングします。

UnrealUI_Phase_1_Docking1.jpg

ここで、2 つ目のウィジェットのドッキング エッジを一方向にドラッグすると、最初のウィジェットのドッキング エッジも同じ割合で移動します。最初のウィジェットのドッキング エッジと 2 つ目のウィジェットのドッキング エッジの間の位置のパディング (埋め込み) を変更するには、ドッキング エディタを使用します。ドッキング エディタにアクセスするには、リレーション内の最初のウィジェットを右クリックし、コンテキスト メニューから [Docking Editor] (ドッキング エディタ) を選択します。ドッキング エディタで定義可能なパディング値とは、2 つのドッキング エッジの位置の間のオフセット量を表わします。ドッキング リレーションを解除するには、リレーションを開始した円形ハンドルを右クリックし、[Break Docking Link] (ドッキング リンクの解除) をクリックします。

UnrealUI_Phase_1_Docking2.jpg

1 つ目のウィジェットのドッキングしたエッジと 2 つ目のウィジェットのドッキングしたエッジとの間のパディング(埋め物)は、ドッキング エディタで編集できます。ドッキング エディタは、Docking Pane(ドッキング ペイン)を表示、リレーションの 1 つ目のウィジェットを右クリックしてコンテキスト メニューからドッキング エディタを選択、もしくはドッキング ハンドルを右クリックしてコンテキスト メニューから [ Docking Editor ] (ドッキング エディタ)を選択、のいずれかの方法でアクセスします。

UnrealUI_Phase_1_Docking3.jpg

パディングの値は、ドッキング エディタで、ドッキングしている 2 つのエッジのポジション間のオフセット量を指定して設定できます。

UnrealUI_Phase_1_Docking4.jpg

ドッキング リレーションは、対象のドッキング リレーションの基となる場所にある丸を右クリックし、[Break Docking Link](ドッキング リンクの解除)を選択することによって簡単に削除できます。

UnrealUI_Phase_1_Docking5.jpg

スタイル

スタイルは、ウィジェットの表示形態を決定するものです。スタイルには、テクスチャのレンダリング方法 (スケールやストレッチなど) に関する情報や、文字列 (フォント、色、属性など) の描画方法に関する情報が含まれる場合があります。またウィジェットの表示形式は、そのスタイルを変更することによって特定の状態から別の状態に変化させることができます。ウィジェットによっては、異なるタイプのスタイル (現時点では、テキスト、画像、コンボ) が必要になります。ユーザーは、スタイルを 1 つ作成し、同じプロパティとなるように、それをシーン内の複数のウィジェットに適用することができます。すべてのツールは、別のパッケージ ファイルとして保存される「スキン」というコンテナに格納されます。ゲーム UI には、最低でも 1 つのスキン ファイルが必要になります。スキンのスタイルは、Scene Tools Panel (シーン ツール パネル) のスタイル ブラウザで追加、削除、編集することができます。

スタイルの階層

新規スタイルを作成する際は、テンプレートを選択することによって既存スタイルをベースとすることができます。新規作成したスタイルは、既存スタイルの子ノードとして階層ツリーに表示され、特殊な関係 (リレーション) も同時に作成されます。階層内のスタイル間のリレーションは、原型と原型インスタンスとの間のリレーションとよく似ています。既存スタイルをベースとして新規スタイルを作成した場合、既存スタイルは、新規スタイルの「原型」となります。それ以降、親スタイルのプロパティを変更すると、原型と原型インスタンスの場合と同様に、子スタイルにもその変更内容が自動的に反映されます (子スタイルのプロパティが優先的に変更されていない限り)。この変更反映プロセスはステータス単位で処理されるため、親スタイルの「有効」ステータスに対する変更は、子スタイルの「有効」ステータスに対してのみ反映されます。

スタイルの新規作成

現在のスキン内で新規スタイルを作成する場合は、スタイル ブラウザでアイテムを右クリックし、[ Create New Style ](スタイルの新規作成)を選択します。スタイル タイプ、固有タグ、名前、テンプレートを選択するためのウィンドウが表示されます。テンプレートは、作成するスタイルのベースとなるスタイルを決定付けるもので、新規スタイルは、既存スタイルの「子」となります。

UnrealUI_Phase_1_Styles2.jpg

[OK] をクリックすると新規スタイルが作成され、すぐにスタイル エディタ ウィンドウが表示されます。

スタイルの編集

スタイルは、スタイル エディタで編集できます。スタイル エディタは、スタイル ブラウザで [Edit Style] (スタイルの編集) を選択、またはウィジェットを右クリックしてポップアップ メニューから [ Edit Style ] を選択して開くことができます。

UnrealUI_Phase_1_Styles1.jpg

また、スタイルを新規作成する際も、スタイル エディタ ウィンドウが自動的に開きます。以下は、スタイル エディタ ウィンドウと、その各エリアのサンプルです。ここでは、テキスト スタイルのプロパティが表示されていますが、選択したスタイル タイプによってエディタの表示形式が異なります。

UnrealUI_Phase_1_Styles3.jpg

1. 共通プロパティ すべてのスタイルタイプに適用される共通プロパティが含まれています。ここでスタイル固有のステートを選択および編集することもできます。ステート横のチェックボックスが空欄 (選択されていない) 場合、そのスタイルの値が親スタイルの同じステートから継承されることを意味します。したがって、そのステートの親スタイルのプロパティをオーバーライドするには、ステート横のチェックボックスを選択する必要があります。
2. カスタム プロパティ 現在編集中のスタイルタイプに固有のプロパティを表示します。テキスト スタイルとイメージ スタイルでは、表示される内容が異なります。
3. プレビュー ウィンドウ 現在のプロパティ値がウィジェットにどのような効果を与えるかをプレビューとして表示します。

ウィジェットへのスタイル割り当て

ウィジェットを右クリックして、ポップアップ メニューを表示します。[ Select Style ] (スタイルを選択) を選択すると、割り当て可能なスタイルのリストが表示されます。ウィジェットに現在割り当てられているスタイルの横には、チェックマークがあります。目的のスタイルを選択すると、ウィジェットは新たに割り当てられたスタイルにより更新されます。 UnrealUI_Phase_1_Styles4.jpg

フォントの編集

フォントは、現在のアスペクト比と、コンテントが作成された際に使用されていたアスペクト比との違いをベースに、スケールすることができます。これは、ラベルのスタイルの AutoScale モードから = ResolutionBased = (スタイル エディタでは _ Resolution Scaled _ と呼ばれる)を利用して実行できます。

スキン

UI システムはスキンの概念をサポートし、カスタム スキンの作成、複数シーンへのスキンの再利用機能を提供しています。スキンとはスタイルのコンテナのことです。完全なゲーム UI には、デフォルトのスキン パッケージとしての役割を果たすスキン パッケージが少なくとも 1 つ必要です。デフォルトのスキンには、ゲーム内のすべてのシーン ウィジェットに適用可能なスタイルのベースバージョンが格納されています。ユーザーは、スキン内のスタイルを追加、編集、削除することができます。

カスタム スキン

ユーザーはカスタム スキンを作成できますが、直接または間接的にデフォルトのスキン パッケージに基づいて作成する必要があります。ユーザーは、スタイルの追加、消去および編集のほかに、デフォルトのスキン パッケージから派生したスタイルをオーバーライドしたり、置換することもできます。新規作成されたカスタム スキンには、スタイルが直接には含まれていませんが、親スキンのスタイルへの参照が暗黙的に含まれています。これらの参照を、実際のスタイルのカスタム コピーに置き換えることができます。新規スタイルを作成する代わりにスタイル参照を置換した場合、そのベーススキン スタイルが置換コピーのアーキタイプになり、アーキタイプに変更を加えると、カスタム スキン内で置き換えられたスタイルにも自動的にプロパゲートされます。さらに、これらの 2 つのスタイルには同じベース ID が与えられます。これは、デフォルト スキンから カスタム スキンへの変更が可能であること、スタイルのオーバーライドが、ベーススキン内の元のスタイル バージョンを使用していたウィジェットにも自動的に適用されることを意味します。これにより、ウィジェットのスタイルを手動で変更する手間がなく、シーン間ですばやくスキンを変更することができます。完全に異なるスタイルを特定にウィジェットに割り当てることも可能ですが、そのようなスタイル変更は、そのスキンと、カスタム スキンに基づいて作成されるスキンを使用するウィジェットにしか適用されません。カスタム スキンセットを他の カスタム スキンセットに基づいて作成できることから、カスタム スキンは階層的であるといえます。

ゲーム内でのカスタム スキンの使用

エンジンにカスタム スキンの使用を指示するには、作成するゲームの DefaultEngine.ini ファイルに次の行を追加します。

[Engine.UIInteraction]
UISkinName="MyPackageName.MySkinName"

カスタム スキンセットの作成

既存のスキンを基にカスタム スキンセットを作成するには、UI エディタの [Scene Tools] (シーン ツール) にある [Styles] (スタイル) ブラウザに移動します。現在のスキン名を表示するボックスの横には、感嘆符記号の付いたボタン ( UnrealUI_Phase_1_Skins2.jpg ) があります。ボタンをクリックし、[ Create New Skin ] (新しいスキンを作成) を選択すると、[ Package Name ] (パッケージ名、新しいスキンの保存先となるパッケージ ファイルの名前) と、[ Skin Name ] (カスタムスキンの名前) の入力を求められます。情報を入力して [OK] をクリックすると、新しいカスタム スキンが作成されます。ここで新しいスキンを使用するために選択すると、空のスキンが表示されますが、実際には別のスキンに基づいているため、ベース スキンのスタイル参照が暗黙的に含まれています。つまり、ベース スキンを使用する場合と同様に、ウィジェットに同じスタイルを適用できます。この時点で、カスタム スキン内に新規スタイルを作成することも、またはベース スキンのスタイルをオーバーライドすることもできます。 注意 存在しないパッケージ名を指定した場合、その名前でパッケージが作成されますが、汎用ブラウザ画面を最新情報に更新しない限り、ブラウザには自動的に表示されません。

UnrealUI_Phase_1_Skins1.jpg

次に、 Package Name (パッケージ名)- 新規スキンが保存されるパッケージ ファイルの名前、および Skin Name (スキン名)- 新規カスタム スキンの名前を入力する画面が表示されます。

UnrealUI_Phase_1_Skins1a.jpg

[ OK ] をクリックすると、カスタム スキンが新規作成されます。ここで、新規作成したスキンを使用した場合は、空のスキンが表示されますが、別のスキンをベースとしているため、実際にはそのベース スキンのスタイルを参照していることになります。これは、ベース スキンを使用する場合と同様に、同じスタイルをウィジェットに適用することができるということを意味します。この時点では、カスタム スキン内に新規スタイルを作成、またはベース スキンのスタイルを変更することができます。 注意 存在しないパッケージの名前を指定した場合は、その名前のパッケージが作成されますが、表示内容を更新するまでコンテント ブラウザに表示されない場合があります。

カスタム スキンセットでのベース スタイルのオーバーライド

カスタム スキンを作成した後で、そのベース スキンから継承する任意のスタイルをオーバーライドすることができます。これを実行するには、まずスキン エディタでカスタム スキンを開く必要があります。Unreal エディタの汎用ブラウザに進み、カスタム スキンが保存されているパッケージを開きます。左マウスボタンでカスタム スキンをダブルクリックすると、[Skin] (スキン) ブラウザウィンドウが表示されます。このウィンドウでスキン階層を確認したり、カスタム スキン内のベーススキン スタイルのオーバーライドや、カスタムスタイルの追加、編集、削除を行なうことができます。[Styles] (スタイル) タブに表示されるスタイル リストに、 斜体 の項目が含まれることがあります。これは、当該スタイルがこのカスタム スキンではなくその親スキンに実際に存在し、カスタム スキンにはその参照が暗黙的に含まれていることを意味します。この参照をカスタム バージョンのスタイルでオーバーライドまたは置換するには、 斜体 の項目を右クリックし、[ Replace Style Style Name In Current Skin ] (現在のスキンで(スタイル名) を置換する) を選択します。項目のフォントから斜体設定が消え、この時点でカスタム スキン独自のスタイルのコピーが含まれます。

UnrealUI_Phase_1_Skins3.jpg

次にスキン エディタ ウィンドウが表示されます。ここでは、スキン階層の表示、カスタム スキン内のベース スキン スタイル変更、カスタム スタイルの追加、編集、削除が可能です。

skineditor.jpg

[Styles](タブ)に表示されるスタイル リストには、 _ 斜体 _ で表示されているアイテムが含まれている場合があります。これは、実際にはそのスタイルがカスタム スキン内ではなく親スキン内に存在し、カスタム スキンにはそれに対する参照が含まれているということを意味します。この参照は、変更することや、カスタム バージョンのスタイルに置き換えることができます。その際は、 _ 斜体 _ で表示されているアイテムを右クリックし、[ Replace Style Style Name In Current Skin ] (現在のスキンのスタイル名を変更)を選択します。

UnrealUI_Phase_1_Skins5.jpg

スタイルが変更された後は、アイテムが斜体ではなく 太字 で表示されます。この時点で、カスタム スキンに固有のスタイルが含まれることになります。

styleoverride.jpg

スキンの変更

シーンに使用されているスキンを変更するには、最初に、そのスキンを含むパッケージがコンテント ブラウザロードされていることを確認します。次に、シーン ツール ペインの [Styles](スタイル)タブに用意されているドロップダウン ボックスをクリックし、目的のスキンを選択します。

UnrealUI_Phase_1_Skins4.jpg

データ ストア

ウィジェットで視覚的に表示されるデータは、通常は、使用されているスタイルおよびプロパティによって制御されますが、ウィジェットが制御できるデータは通常、UI Kismet エディタのロジックで定義されています。スタイルおよび Kismet によって提供される機能はこのガイドで後ほど説明しますが、ウィジェットで表示および変更できるデータのソースは、データ ストアも提供できます。現時点でのデータ ストア機能は、文字列データの表示に限定されていますが、将来的には、ウィジェットで画像データ、ゲーム ステータス、ゲーム設定データを表示、変更、ゲームにフィードバックできるようになります。

文字列データにデータ ストアを使用するには、文字列データ (ラベルやラベル ボタン) を表示できるウィジェットを作成する必要があります。ウィジェットの作成後は、選択ツール (https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_SelectionTool.jpg) を使用してそのウィジェットを選択し、[Edit] (編集)メニューから [Data Store Browser] (データ ストア ブラウザ)を選択します。

UnrealUI_Phase_1_DataStores1.jpg

1. カテゴリー ビューポート データストア カテゴリーのビューポートには、使用可能なすべてのデータ ストア カテゴリーが一覧表示されます。
2. タグ ビューポート データストア タグ ビューポートには、選択したカテゴリー内のデータ ストアのリストが表示されます。

データ ストア ブラウザのいずれかのタブに、2 つのビューポートが表示されます。左のビューポートには、利用可能なデータ ストア カテゴリが表示されます。 「Data Store Tags」というラベルが付いている右のビューポートには、左ビューポートで選択されているカテゴリの利用可能なデータ ストアがリスト表示されます。[Data Store Tags] ビューポートには、選択されているカテゴリ内およびそのサブカテゴリ内のデータ ストアがすべて表示されます。

[Strings] (文字列)タブを選択し、カテゴリ ビューポートで [Strings] (文字列)を展開すると、文字列カテゴリのリストが表示されます。これらの文字列サブカテゴリは、さらに展開することができます。カテゴリを選択すると、[Data Stores Tags] ビューポートに利用可能な文字列がリスト表示されます。選択されているウィジェットに文字列をバインドする場合は、目的の文字列を選択し、バインド対象のウィジェットを右クリックして、コンテキスト メニューから [ Bind widgets to selected data store ] (選択したデータ ストアにウィジェットをバインド) を選択します。

たとえば、選択されているウィジェットがラベルの場合、そのウィジェットのラベル テキストが、選択された文字列の値に変化し、データ ストアにバインドされたことが明確になります。

UnrealUI_Phase_1_DataStores2.jpg

フォーカス チェーン

シーン内では、従来 Focused(フォーカス) ステートにあるウィジェットがユーザーの入力を受け取ります。ほとんどのウィジェットではこれがデフォルトの動作ですが、UI イベント エディタ [Edit] (編集) メニューの [Modify Default UI Event Key Bindings] (デフォルト UI イベント エイリアス キーバインディングの修正) エディタを使用して、この動作の定義を変更することができます。[Modify Default UI Event Key Bindings] エディタの機能については、「入力処理」セクションで詳細に解説します。ここではフォーカス チェーン システムについて説明するため、 Focused(フォーカス) ステートにあるウィジェットが入力を受け取るウィジェットであることを前提とします。

フォーカス チェーン システムとは、現在 Focused(フォーカス) ステートにあるウィジェットが関連ユーザー入力を介して NavFocus(フォーカスの移動) イベントを受け取ったときに、どのウィジェットが Focused(フォーカス) ステートに移行するかをデザイナーが定義するシステムです。現在のウィジェットからのフォーカス変更をトリガーする関連入力は、 NavFocus(フォーカスの移動) イベントをトリガーするキーにより定義されます。イベント キーのバインディングに関する情報は、「入力」セクションで詳細に説明します。「フォーカス チェーン」という用語は、デザイナーは UI シーン内のウィジェット間にリンク システム (つまりチェーン) を定義して、ウィジェット間のフォーカスの移動先を表わすことができるという概念に由来しています。 NavFocus(フォーカスの移動) イベントを生成し、フォーカス チェーンで定義された動作をトリガーする入力は、 "Unbound Navigation(非バインド ナビゲーション)" と呼ばれています。その逆に、 "Bound Navigation(バインド ナビゲーション)" とは NextControl(次のコントロール) および PreviousControl(前のコントロール) イベントを生成し、結果としてフォーカス チェーンから外れて、ウィジェット間を直線的に循環移動する単純なフォーカス変更動作をトリガーするものです。デフォルトでは、 NextControl(次のコントロール)PreviousControl(前のコントロール) イベントは Tab キーにバインドされています。

UI シーン内のウィジェットのフォーカス チェーンを作成するには、UIScene エディタ ウィンドウ上部の下側パネルから、フォーカス チェーン ツール (UnrealUI_FocusChainTool.jpg) を選択します。ツールを選択してからウィジェットをクリックすると、選択されたウィジェットの各エッジの中央にひし形が表示されます。これらのひし形はそれぞれ、指定イベントである NavFocus(フォーカスの移動) イベントに対応します。例えば、右エッジ中央のひし形は、ユーザーが右矢印キーを押すとトリガーされる NavFocusRight(フォーカスを右に移動) イベントをウィジェットが受け取ったときに、フォーカスが移動する方向に対応します。ドッキング ツールと同様に、これらのひし形の 1 つをクリックしてドラッグするとリンクが作成されます。デザイナーはこれをシーン内の別のウィジェットにドラッグすることができます。適切なウィジェットの上でマウスボタンを放すと、2 つのウィジェット間にフォーカス リンクまたはチェーンが作成されます。ウィジェット間のリンクを削除するには、ひし形を右クリックし、[Break Focus Chain] (フォーカス チェーンの解除) を選択します。

UnrealUI_Phase_1_Focus1.jpg

Focus Chain Tool (フォーカス チェーン ツール) (https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_FocusChainTool.jpg) でウィジェットを選択すると、シーン内のウィジェット間のフォーカス リンクが既に作成されていることがわかります。これは、別のウィジェットがあるシーン内にウィジェットが配置された場合は常に、UI システムがシーン内でのオリジナルのポジションをベースに、新規ウィジェットとその周囲のウィジェットとの間にフォーカス リンクを自動的に作成しようとするためです。

入力

Unreal の UI ツールでは、デザイナーは、ウィジェットにステータス ベースで関連付けられているキー バインドを割り当ておよび編集することができます。

デフォルト キー バインドの編集

ウィジェットにデフォルトで設定されているキー バインドは、[Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド)ウィンドウで変更することができます。このウィンドウは、シーン エディタの [Edit] (編集)メニューから [Modifying Default Key Bindings] (デフォルト キー バインドの編集)を選択、または F8 キーを押して開きます。

デフォルト キー バインド編集の概要

[Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド)ウィンドウの機能を利用することにより、特定タイプのすべてのウィジェットがユーザー入力に対応する方法を全体的に変更することができます。これは、ボタン ウィジェットで Clicked(クリック)入力イベント エイリアス を変更した場合、その変更内容がパッケージ内のすべてのボタン ウィジェットに適用されることを意味します。各ウィジェットの動作も、「個々のウィジェットに対するキーのバインド」セクションに記載されている方法で変更できます。[Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド)ウィンドウのデータは、サンプルを使用して説明します。ボタン ウィジェットの Clicked(クリック)入力イベント エイリアス に注目してください。

UnrealUI_Input3.jpg

この 入力イベント エイリアス には、3 つのバインド済みキーが関連付けられています。メニューのバインド済みキーに注目してください。

Clicked(クリック)入力イベント エイリアス にバインドされているキーのテーブルがあり、ここには、各キーが押された際にこのイベントがトリガーされるステートが記載されています。テーブルの最初の列は、キーの名前です。これ以外の列には、キー押下を待機する各ステートが表示されています。ここでは、 LeftMouseButton のステートに「Active」 (アクティブ) が使用されており、これは、 入力イベント エイリアス をトリガーするには、キー押下が発生した際にマウス ポインタがボタン ウィジェット上にある必要があることを意味しています。Enter および SpaceBar の場合、 Clicked(クリック) イベントをトリガーするには、ボタン ウィジェットのステートが「Focus」になっている必要があります。

キー バインドは、特定イベントに対して任意数追加することができます。また、バインドは削除することもできますが、変更内容は、変更するタイプのすべてのウィジェットに対して全体的に適用されることに留意する必要があります。

入力イベント エイリアスへのキー入力イベント

入力イベント エイリアス にキー バインドを追加するには、最初に、[Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド)ウィンドウの [ Widget Class ] (ウィジェット クラス)リストで、編集するウィジェット タイプを選択します。

input_widgetclass.jpg

次に [ Supported Input Aliases ] (対応する入力エイリアス)リストで、キー バインドの追加対象となる 入力イベント エイリアス を選択します。

input_inputalias.jpg

input_newkey.jpg ボタンをクリックすると、[ Select Input Key ] (入力キーの選択)ダイアログに利用可能なキーが表示されます。

input_inputkey.jpg

入力イベント エイリアス にバインドするキーを押し(リストでそのキーが選択される)、 input_okbutton.jpg をクリックします。 注意 別のエイリアスに既にバインドされているキーを押した場合は、警告ダイアログが表示されます。異なる修飾子セットを使用する限り、この警告は無視しても構いません。

input_duplicatekey.jpg

上記の操作の後、[Bound Keys] (バインド済みキー)テーブルに新規のキー バインドが作成され、このキーが処理されるステートを編集することが可能になります。

input_keytable.jpg

キー バインドを削除するには、[Bound Keys] (バインド済みキー)テーブルで目的のキー バインドを右クリックし、コンテキスト メニューから [ Unbind Input Key ] (入力キーのバインド解除)を選択します。

input_contextmenu.jpg

同じコンテキスト メニューから [ Bind New Input Key ] (新規入力キーをバインド)を選択すると、既存バインドのキーを変更することもできます。

注意 ウィジェットの入力エイリアスに、実際にキーが割り当てられているかどうかは、UI 入力エイリアスのダイアログで再確認してください。これは、ウィジェットの入力キーが処理( ProcessInputKey 経由)されない主な原因となります。

入力イベント エイリアスの切り替え

どのキーをどの 入力イベント エイリアス にバインドするかを定義することに加え、個々のウィジェットが反応する 入力イベント エイリアス を有効または無効にすることもできます。ウィジェットが反応する 入力イベント エイリアス の編集は、[Edit Widget Events] (ウィジェット イベントの編集) ダイアログで行います。このダイアログを開くには、シーン エディタのビューポートでウィジェットを右クリックし、表示されるコンテキスト メニューから [Enable/Disable Widget Events] (ウィジェット イベントの切り替え)を選択します。[Edit Widgets Events] (ウィジェット イベントの編集)ダイアログでは、入力イベント エイリアスの選択または選択解除することにより、選択されているウィジェットのイベント エイリアスを有効または無効にできます。 入力イベント エイリアス のキー バインドを変更する必要がある場合は、「デフォルト キー バインド編集の概要」セクションで説明した [Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド) ウィンドウを、[Edit Widgets Events] (ウィジェット イベントの編集) ダイアログから開くこともできます。

UnrealUI_Input11.jpg

個々のウィジェットに対するキーのバインド

ここまで、特定タイプのすべてのウィジェットに対する 入力イベント エイリアス のキー バインドを変更する方法を説明しました。これは、特定の 入力イベント エイリアス のキー バインドを変更した場合は、その変更内容が、そのタイプのすべてのウィジェットに適用されることを意味します。しかし、特定タイプのすべてのウィジェットではなく、特定ウィジェットのキー バインドを変更したい場合もあります。その場合は、Kismet イベントを利用します。ここでは、入力に関連する Kismet に焦点を当てて説明します。UnrealUI の Kismet に関するその他の詳細は、「Kismet」セクションを参照してください。

特定ウィジェットの Kismet エディタにアクセスするには、シーン エディタの Scene Viewport (シーン ビューポート)で目的のウィジェットを右クリックし、コンテキスト メニューから [Kismet] を選択します。Kismet エディタでは、キー バインドを変更したいステートに対応したシーケンスを選択する必要があります。

UnrealUI_Input1.jpg

Sequence Editor (シーケンス エディタ)でシーケンスを選択すると、State Input Event (ステート入力イベント)が表示されます。 この Kismet イベントは、現在のステートのこの特定ウィジェットに固有のキー バインド エディタとして機能します。ウィジェットが持つ、各ステートに対する Kismet シーケンスには、デフォルトで State Input Event (ステート入力イベント)が作成されます。この特定ウィジェットにカスタム バインドを追加するには、この Kismet イベントを利用します。その際は、目的のState Input Event (ステート入力イベント) をダブルクリックして [Bind Event Keys] (イベント キーのバインド) ウィンドウを表示します。

UnrealUI_Input2.jpg

[Bind Event Keys] (イベント キーのバインド) ウィンドウには、このウィジェットの特定のステートにキーをバインドするためのインターフェース ([Default Key Bindings](デフォルト キー バインド)ウィンドウと同様のインターフェース) が用意されています。 [Bind Event Keys] (イベント キーのバインド) ウィンドウ内の [Available Keys] (利用可能なキー)ウィンドウには、シーン エディタの [Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド) ウィンドウのようなキー押下だけではなく、キーのリリースやリピートをバインドするための追加機能が用意されています。キー バインドを追加するには、利用可能なキーのリストからキーを選択し、 UnrealUI_Input4.jpg ボタンをクリックします。

UnrealUI_Input6.jpg

[Bind Event Keys] (イベント キーのバインド) ウィンドウで作成したキー バインドは、State Input Event (ステート入力イベント)に新規出力ハンドルとして表示されます。これらの出力ハンドルは、特定のキー押下によって Kismet の動作をトリガーするために利用できます。 Kismet の動作に関する説明は、「Kismet」セクションを参照してください。

個々のウィジェットのデフォルト バインドの変更

「個々のウィジェットに対するキーのバインド」セクションで説明した方法を利用することにより、シーン エディタの [Bind UI Event Key Defaults] (UI イベントのキー デフォルトをバインド) ウィンドウで既にバインド済みの個々のウィジェットのキーを、再バインドすることもできます。これは、State Input Event (ステート入力イベント) に用意されている機能を利用することにより、個々のウィジェットへの新規キー バインドの追加だけではなく、特定タイプのあらゆるウィジェットのデフォルトとなっているキー バインドを再設定できることを意味します。

デフォルトで 入力イベント エイリアス にバインドされているキーを、Kismet のState Input Event (ステート入力イベント) で再バインドすると、その入力キーの出力ハンドルの横に「OVERRIDE」と表示されます(以下を参照)。

UnrealUI_Input9.jpg UnrealUI_Input7.jpg

サウンド キューの使用方法

ウィジェットの ClickedCue プロパティは、UISoundCue の名前を参照します。入力エイリアス システムと同様に、UISoundCue では、使用されている実際のリソースと、実行する論理アクションとを分離することができます。

異なるスキンの同じサウンド キュー名に異なるサウンドを関連付けることができるようにウィジェットの SoundCue を設定するには、いくつかの操作を実行する必要があります。たとえば、ゲームの前面スキンに複雑なサウンドを使用し、ゲーム内のスキンには使用メモリ容量が少ないサウンドを使用することなどが可能です。

設定

ゲームの DefaultUI.ini ファイルを開き、 [Engine.UIInteraction] セクションの UISoundCueName リストを特定します (多くのゲームで使用されているように、ゲームでカスタム インタラクション クラスを使用してる場合は、このセクション名が異なります)。このリストは、UI サウンド プロパティ( UIButton の ClickedCue プロパティなど)として有効な利用可能な名前を定義するためのものです。

スキン

コンテント ブラウザ で目的の UISkin をダブルクリックしてスキン エディタを開きます。左ペインでゲームのスキンを選択し、右ペインの [ Sound Cue ] (サウンド キュー) タブをクリックします。右ペインを右クリックし、[ Add Sound Cue ] (サウンド キューの追加) を選択します。表示されるダイアログでは、これらのサウンド キュー名を実際のサウンド キューにリンクすることができます。

Kismet の使用方法

Unreal Engine 3 の Unreal Kismet ツールは、非常に柔軟性が高くパワフルなツールで、プログラマーでなくても、レベル内の複雑なゲームプレイ フローをスクリプトにすることができます。UnrealUI システムでは、 Unreal Kismet システムのベースとすることにより、プログラマーでなくても、ユーザー インターフェースの複雑な動作をスクリプトにすることが可能となっています。ゲームプレイにおける Kismet のように、シンプルな機能を持つ Sequence Object(シーケンス オブジェクト)を接続することにより、デザイナーは、複雑なシーケンスを構築できます。

Kismet エディタを開く

UI Kismet エディタを開くには、シーン ウィンドウを右クリックしてコンテキスト メニューから [Kismet Editor] (Kismet エディタ) を選択、または [Scene Tools] (シーン ツール) パネルの [Scene] (シーン) タブに用意されている UI シーンのアイコン (https://udn.epicgames.com/pub/Three/UIEditorUserGuide/UnrealUI_Tools_SceneIcon.jpg) を右クリックしてコンテキスト メニューから [Kismet Editor] (Kismet エディタ) を選択します。

Kismet の概要

Kismet エディタのレイアウト

UnrealUI_KismetEditor.jpg

  1. Sequence Editor (シーケンス エディタ)- シーケンス ブラウザでノードを選択すると、エディタのグラフィック ビューでそのノードが選択されます。
  2. プロパティ - エディタ内で選択されているアイテムのプロパティ。
  3. Sequence Browser (シーケンス ブラウザ)- シーケンス ブラウザでは、シーンのステート フォルダ内のステート シーケンスが表示され、各ウィジェットの名前がツリー形式で表示されます。

シーケンスに関する作業

シーケンス

UnrealUI Kismet におけるシーケンスの全般的な概念は Unreal Kismet? から変わりなく、従来からの、多様かつ複雑な動作を達成するために相互作用するシーケンス オブジェクトのコレクションですが、サブシーケンスの複雑な階層を構築する機能が変更されています。UnrealUI のコンテキストでは、サブシーケンスはデザイナーにより作成されるものではなく、代わりにシーン、ウィジェット、ステートとして存在します。作成されるウィジェットやシーンはそれぞれ、ウィジェットがサポートする指定ステートに関連付けられたさまざまなシーケンスに加えて、グローバル シーケンスを継承します。グローバル シーケンスに存在するシーケンス オブジェクトは常にアクティブ状態にありますが、ステート シーケンスに存在するシーケンス オブジェクトは、ウィジェットがそのステートに入ったときのみアクティブになります。

UnrealUI_KismetEditor2.jpg

シーケンス オブジェクト

シーケンス オブジェクトは、Kismet シーケンスの基盤となる構成要素です。さまざまなオブジェクトが提供する機能により、シーンやウィジットの複雑な動作をスクリプト化することができます。シーケンス オブジェクトには、イベント、条件、アクションおよび変数の 4 つのタイプがあります。以下は各オブジェクト タイプのの説明です。

イベント

イベント オブジェクトとは、シーケンスに対して条件やアクションをトリガーする入力を作成するオブジェクトです。赤いひし形で示され、右側には出力があり、下側にアクティベータ変数 (イベントをトリガーするウィジェットを示す) を伴う場合があります。イベントは、シーンへのユーザー入力やウィジェット ステートの変化など、多数のきっかけによりトリガーすることができ、トリガーされると同時に、アクションまたは条件への入力として使用可能な出力を提供します。現在使用可能なイベントの完全なリストは、「UI シーケンス オブジェクトの参照一覧」を参照してください。

UnrealUI_KismetEditor3.jpg

条件

条件オブジェクトとは、シーケンスのフロー制御の役目を果たすオブジェクトです。青い長方形で示され、左側には入力、右側には出力、下側には関連する変数があります。基本的に、条件は変数の状態に基づいて入力をシーケンスにリダイレクトする 1 つの手段として機能します。現在使用可能な条件の完全なリストは、「UI シーケンス オブジェクトの参照一覧」を参照してください。

UnrealUI_KismetEditor6.jpg

アクション

アクション オブジェクトとは、シーン内のウィジェット上、またはシーン自体に対してアクションを実行するオブジェクトです。ピンクの長方形で示され、左側には入力、右側には出力、下側には変数の関連付けがあります。アクションは、通常イベントまたはアクションの出力形態を取る入力によってトリガーされます。現在使用可能なアクションの完全なリストは、「UI シーケンス オブジェクトの参照一覧」を参照してください。

UnrealUI_KismetEditor4.jpg

変数

変数オブジェクトは、イベント、アクションまたは条件により使用される特定タイプの情報を格納するオブジェクトです。円形で示され、色は変数のタイプに応じて異なります。変数シーケンス オブジェクトは、シーケンスにローカルな情報を格納することも、ウィジェットのように Kismet シーケンスの外部に存在するグローバル データ関連の情報を格納することもできます。シーン内のウィジェットに関連する変数を作成するには、シーン エディタでウィジェットを選択してから、Kismet のシーケンス エディタ内か、またはシーケンス ブラウザで目的のシーケンスを右クリックします。シーケンス オブジェクトの作成に使用するコンテキストメニューと共に、追加項目として [New Object Var Using "Widget Name"] ("ウィジェット名"を使用する新規オブジェクト変数) が表示されます。「Wedget Name (ウィジェット名)」は、シーン エディタで選択されたウィジェットの名前です。

UnrealUI_KismetEditor5.jpg

シーケンス オブジェクトの作成

指定シーケンス内でシーケンス オブジェクトを作成するには、2 つの方法があります。シーケンス ブラウザで、オブジェクトを追加するシーケンスを選択し、次にシーケンス エディタを右クリックしてコンテキストメニューから適切な新規オブジェクトを選択する方法と、シーケンス ブラウザでシーケンスを右クリックし、コンテキストメニューから新規オブジェクトを選択する方法です。

UnrealUI_KismetEditor10.jpg

動作の作成

Kismet で有用なシーケンスを作成するには、シーケンス オブジェクト間におけるリレーション作成の基本的な概念を理解する必要があります。シーケンス内にはさまざまなシーケンス オブジェクトを配置できますが、それらのオブジェクトにはすべて入力と出力ハンドルが含まれています。オブジェクトの出力ハンドルと、別のオブジェクトの入力ハンドルの間に関連付けを作成することができます。通常これらの入力/出力ハンドルには、関連付け (またはリンク) 可能な相手に関する制限があります。制限事項には、例えば入力は出力へのリンクしか許容しないという要件のような暗黙的な制限と、次の例で Activate UI State Action (UI ステートのアクティブ化アクション) がオブジェクト変数しか変更しないことをピンク色で示しているように、カラーコーディングで明示的に表示される制限があります。

以下の図に示す Kismet 動作の基本的の一例では、アクションの入力として機能するイベントと、そのアクションが影響を及ぼす変数が示されています。Scene Opened (シーンを開く) イベントと Activate UI State (UI ステートのアクティブ化) アクションの間にリンクを作成するには、イベントの出力ハンドルをクリックし、アクションの入力ハンドルにドラッグします。リンクが作成可能な場合は、ドラッグ先のハンドルの色が変わります。この時点でマウス ボタンを放すと、リンクが作成さされます。変数の場合は、変数であることを示す円形全体がリンク先のハンドルの役目を果たします。

UnrealUI_KismetEditor7.jpg

UnrealUI_KismetEditor8.jpg

シーケンス オブジェクトの参照一覧

以下の参照一覧では、UnrealUI の Kismet 実装に特有の Kismet イベント、条件、アクションおよび変数を定義しています。その他の Kismet シーケンス オブジェクトの機能は Unreal Kismet? から継承され、UnrealKismetReference (Unreal Kismet リファレンス) で参照することができます。

イベント

UI

  • * Initialized (初期化済み)* - このイベントは、シーケンス (そのイベントが存在する) のオーナーが初期化された際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。
  • * Enter State (ステート変化)* - このイベントは、シーケンス (そのイベントが存在する) のオーナーが新しいステートになった際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。
  • * Leave State (ステート変化解除)* - このイベントは、シーケンス (そのイベントが存在する) のオーナーの現在のステートが解除された際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。
  • * Scene Opened (シーン オープン)* - このイベントは、現在のシーンが開いた際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。
  • * Scene Closed (シーン クローズ)* - このイベントは、現在のシーンが閉じた際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。
  • On Click(オン クリック) - このイベントは、シーケンスのオーナーが、現在のステートに対する Clicked Input Event Alias (クリック入力イベント エイリアス) にバインドされた入力を受信した際にトリガーされます。このイベントには、そのイベントに関連付けられた、1 つの結果を出力する変数を使用することができます。この変数は、アクティベータと呼ばれるオブジェクト変数です。このアクティベータの動作については、「シーケンス オブジェクト」セクションのイベントの説明を参照してください。

条件

UnrealUI の Kismet 機能における条件オブジェクトは、 Unreal Kismet? の場合とすべて同じです。詳細は UnrealKismetReference (UnrealKismet リファレンス) を参照してください。

アクション

その他

  • Console Command (コンソール コマンド) - 詳細は、UnrealKismetReference を参照してください。

UI

  • Close Scene (シーンを閉じる) - このアクションは、シーンを閉じる際に使用します。このアクションには、入力、出力、変数がそれぞれ 1 つずつあります。この変数は、閉じるシーンを指定するためのオブジェクト変数です。この動作を実行した後このアクションは、そのアクションの結果に応じて、「Successful」(成功)または「Failed」失敗のいずれかを出力します。指定したシーンがシナリオ内にあるために閉じることができない場合、このアクションは「失敗」となります。
  • Open Scene (シーンを開く) - このアクションは、シーンを開く際に使用します。このアクションには、入力、出力、変数がそれぞれ 1 つずつあります。この変数は、開くシーンを指定するためのオブジェクト変数です。この動作を実行した後このアクションは、そのアクションの結果に応じて、「Successful」(成功)または「Failed」失敗のいずれかを出力します。指定したシーンがシナリオ内にあるために開くことができない場合、このアクションは「失敗」となります。

変数

UnrealUI Kismet 関数内のすべての変数は、 Kismet? と同じです。詳細は、 Kismet Reference? ページを参照してください。

原型

原型の利用方法の詳細は、 アーキタイプを使う ページを参照してください。

フォント

フォントの利用方法の詳細は、 フォント作成 ページを参照してください。


ウィジェットの参照一覧

ウィジェットの入力イベント エイリアス

UI システムはウィジェットの入力イベント エイリアスを使用して、プラットフォーム固有の入力キーをプラットフォーム独立型の入力イベントにマッピングします。入力イベントは、特定のウィジェットおよび UI システム全般の各種機能に必要な動作であると考えることができます。プラットフォームが PS3、Xbox360 または PS3 であれ、これらの入力イベントはすべてのプラットフォームに共通するものであり、入力イベント エイリアスは、共通の入力イベントをプラットフォーム固有の入力キーに関連付ける役割を果たしています。これらの入力イベント エイリアスを、Kismet イベントと混同しないでください。

  • * Consume(消費)* - このイベント エイリアスにバインドされる入力はすべて削除され、他のイベント エイリアスがバインドされていてもそれをトリガーしません。また、入力はシーン内の他のウィジェットにプロパゲートされません。
  • * NextControl(次のコントロール)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従わずに、ウィジット間のフォーカス変更をトリガーするため、 "Bound Navigation(バインド ナビゲーション)" であると見なされます。このイベント エイリアスによって、シーン ウィジェットのリストにある次のウィジェットにフォーカスが渡されます。
  • * PreviousControl(前のコントロール)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従わずに、ウィジット間のフォーカス変更をトリガーするため、 "Bound Navigation(バインド ナビゲーション)" であると見なされます。このイベント エイリアスによって、シーン ウィジェットのリストにある前のウィジェットにフォーカスが渡されます。
  • * NavFocusUp(フォーカスを上に移動)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従ってウィジット間のフォーカス変更をトリガーするため、 "Unbound Navigation(非バインド ナビゲーション)" であると見なされます。このイベント エイリアスにより、現在のウィジェットのフォーカス チェーンの上側ハンドルにリンクされているウィジェットに、フォーカスが渡されます (リンクが存在する場合)。
  • * NavFocusDown(フォーカスを下に移動)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従ってウィジット間のフォーカス変更をトリガーするため、 "Unbound Navigation(非バインド ナビゲーション)" であると見なされます。このイベント エイリアスにより、現在のウィジェットのフォーカス チェーンの下側ハンドルにリンクされているウィジェットに、フォーカス渡されます (リンクが存在する場合)。
  • * NavFocusLeft(フォーカスを左に移動)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従ってウィジット間のフォーカス変更をトリガーするため、 "Unbound Navigation(非バインド ナビゲーション)" であると見なされます。このイベント エイリアスにより、現在のウィジェットのフォーカス チェーンの左側ハンドルにリンクされているウィジェットに、フォーカスが渡されます (リンクが存在する場合)。
  • * NavFocusRight(フォーカスを右に移動)* - このイベント エイリアスにバインドされた入力は、フォーカス チェーンに従ってウィジット間のフォーカス変更をトリガーするため、 "Unbound Navigation(非バインド ナビゲーション)" であると見なされます。このイベント エイリアスにより、現在のウィジェットのフォーカス チェーンの右ハンドルにリンクされているウィジェットに、フォーカスが渡されます (リンクが存在する場合)。
  • * Clicked(クリック)* - このイベント エイリアスにバインドされた入力は、Kismet イベント OnClicked を発生させるほか、そのイベントを受け取るウィジェットを Pressed(選択済み) ステートに遷移します (ウィジェットがこのステートをサポートする場合)。
  • * SubmitText(テキスト送信)* - このイベント エイリアスにバインドされた入力は、Kismet イベント Submit Text を発生させるほかに、そのイベントを受け取るウィジェットを Pressed(選択済み) ステートに遷移します。Kismet イベントの Submit Text にはパラメータが存在し、これには入力時点でウィジェットのテキスト入力バッファに含まれていたテキスト内容が格納されます。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * Char(文字)* - このイベント エイリアスにバインドされた入力は、入力キーが対応する文字形式で、ウィジェットのテキスト入力バッファに追加されます。文字は、バッファ内のテキスト カーソルの位置に追加されます。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。編集ボックスなどのクラスが入力を適切に処理するためには、キー "Character" を Char イベントに追加しなければならない点に注意してください。
  • * BackSpace(バックスペース)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファでカーソル位置の前にある文字を消去します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * DeleteCharacter(文字を削除)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファでカーソル位置の後ろにある文字を消去します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * MoveCursorLeft(カーソルを左に移動)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファ内のカーソル位置を左に 1 文字分移動します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * MoveCursorRight(カーソルを右に移動)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファ内のカーソル位置を右に 1 文字分移動します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * MoveCursorToLineStart(カーソルを行頭に移動)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファ内のカーソル位置を現在の行の先頭に移動します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * MoveCursorToLineEnd(カーソルを行末に移動)* - このイベント エイリアスにバインドされた入力は、ウィジェットのテキスト バッファ内のカーソル位置を現在の行の末尾に移動します。これは、編集ボックスなどテキストバッファをサポートするウィジェットに適用されます。
  • * DragSlider(スライダをドラッグ)* - このイベント エイリアスにバインドされた入力は、マウス カーソルの相対的な移動量に応じて、スライダ ウィジェットの現在の値を増減します。
  • * IncrementSliderValue(スライダ値の増分)* - このイベント エイリアスにバインドされた入力は、スライダ ウィジェットの現在の値を増分します。増分の単位は、スライダのプロパティで定義されています。このエイリアスは、スライダ ウィジェットのみに適用されます。
  • * DecrementSliderValue(スライダ値の減分)* - このイベント エイリアスにバインドされた入力は、スライダ ウィジェットの現在の値を減分します。減分の単位は、スライダのプロパティで定義されています。このエイリアスは、スライダ ウィジェットのみに適用されます。
  • * IncrementNumericValue(数値の増分)* - このイベント エイリアスにバインドされた入力は、数値型編集ボックス ウィジェットの現在の値を増分します。増分の単位は、その編集ボックスのプロパティで定義されています。このエイリアスは、数値型の編集ボックス ウィジットのみに適用されます。
  • * DecrementNumericValue(数値の減分)* - このイベント エイリアスにバインドされた入力は、数値型編集ボックス ウィジェットの現在の値を減分します。減分の単位は、その編集ボックスのプロパティで定義されています。このエイリアスは、数値型の編集ボックス ウィジットのみに適用されます。

ウィジェットのステート

ウィジェットのステートとは、ウィジェットを置くことができる状況を指し、特定のユーザー入力設定、Kismet ロジック、スタイル データの 3 つの要素で構成されています。以下はウィジェットの異なるステートのデフォルト動作の概説ですが、指定ステートにおけるウィジェットのプロパティの大半は、変更することができます。

  • Active(アクティブ) - 指定ウィジェットの上にマウス カーソルが置かれると、ウィジェットはアクティブ ステートに入ります。
  • Disabled(無効) - このステートのウィジェットは、フォーカスチェーン システム、または NextControl(次のコントロール)PreviousControl(前のコントロール) の入力イベント エイリアスのいずれの方法を使用しても、Focus ステートに入ることができません。無効ステートにあるウィジェットは、ステートを変更できません。無効ステートのウィジェットの子も、無効ステートに設定されます。
  • Focused(フォーカス) - フォーカス チェーンまたは入力イベント エイリアス( NextControl(次のコントロール)PreviousControl(前のコントロール) のいずれかにより他のウィジェットのステートが変更されて、ウィジェットは Focus ステートに入ります。フォーカス ステートにあるウィジェットは、ユーザー入力を受け取ります。
  • Pressed(選択済み) - フォーカス ステートにあるウィジェットが、入力イベント エイリアス Clicked(クリック) にバインドされたユーザー入力を受け取ると、このステートに入ります。

Widgets(ウィジェット)

UnrealUI_Phase_1_WidgetCheckbox1.jpg

  • * Combo Box(コンボ ボックス)* - このウィジェットは、Edit Box (編集ボックス) と List (リスト) で構成されます。ここからは、編集ボックスでテキストが変更された場合、およびリストでエレメントが選択された場合の、2 つのイベントが送信されます。コンボボックスのデータは、リストによって処理されます。その他のリストと同様に、コンボ ボックスのリストは、選択してデータ ストアにバインドすることができます。編集ボックスもデータ ストアにバインドできますが、編集ボックスの値はコンボ ボックスによって管理されるため、リストが初期化された場合やアイテムが選択された場合は、データ ストアから取得した値が上書きされます。

UnrealUI_Phase_1_WidgetEditbox1.jpg

UnrealUI_WidgetNumericEditbox.jpg

UnrealUI_Phase_1_WidgetLabel1.jpg

UnrealUI_Phase_1_WidgetLabelButton1.jpg

  • * List(リスト) * - このウィジェットは、データをテーブル形式で表示する際に使用します。このリストは、 Collection タイプまたは _ ProviderCollection _ タイプがあるデータ フィールドにバインドされている場合にのみ機能します。このフィールド タイプは、データ ストア ブラウザの左ペインでデータ プロバイダをクリックした際に、右ペインに表示されます。リスト ウィジェットがデータ フィールドにバインドされた後は、コンテキスト メニューから、列を追加、挿入、削除することができます(ウィジェットを右クリックすると [ UIList ] メニュー項目が表示される)。一部のデータ フィールドは複数列に対応していないため、[ Add Column ](列を追加)サブメニューには、データ フィールドが複数列に対応していないという項目しか表示されません。

Clicked(クリック)DragSlider(スライダをドラッグ)DecrementSliderValue(スライダ値の減分)IncrementSliderValue(スライダ値の増分)

UnrealUI_Phase_1_WidgetSlider1.jpg

  • UIMeshWidget UIScene における、3D プリミティブの付属方法と使用方法の例。
  • UIFrameBox ○×ゲーム(3 目並べ)の盤のようなボックスだが、実際には 9 個のイメージからできていて、これによって、コーナーのアスペクト比を保ちながら適切なスケーリングが可能になる。
  • UICalloutButton このウィジェットは、シーン間のナビゲーションを処理するとともに、シーン内で特別な機能を呼び出す。
  • UICalloutButtonPanel このウィジェットは、UICalloutButtons のリストからできているコンテナである。

便利なコンソールコマンド

UI デバッギングを使用するには、以下のようにしてこの機能を有効にします。すなわち、コンソールコマンドtoggledebuginput を true に し、次に、CTRL+ALT+D を押して情報の表示を切り替え、さらに CTRL+F を押してフォーカスされているウィジェットの表示を切り替える。