🎲

(UE4)Widgetをレベル内に配置する方法

2 min read

*概要
作成したWidget(UMG)を、ビューポートではなくレベル内にオブジェクトとして配置する方法

*作業環境
UE:4.26.1
OS:Windows10

UMG、Widgetとは

・UMG(Unreal Motion Graphics)
例えば、ゲームのタイトル画面やスコア、アイテムのインベントリ等、情報や制御の選択を行うためのUIを作成できるツールがUMGです。
テキストだけでなく画像を読み込んで使うこともできるので、用途に応じて様々な形式を作成することができます。
・Widget
UMGで作られたUIのことを云います。


基本的には、ビューポート全体に表示して使うものですが、
今回はWidget自体をレベル内の空間に配置してみたいと思います。

手順①_Widgetの作成

レベル内に配置する用のWidgetを用意しましょう。
作成手順は通常通りです。

コンテンツブラウザから右クリックでUser Interface>Widget Blueprintを選びます。

*Widgetを作る際、パネルのアンカーをセンターに設定しておきましょう

例として、imageとtextパネルを使ってこの様なものを作りました。
名前は"MyWidget"とします。

今回は、このWidgetをレベル内に配置させます。

手順②_Widgetコンポーネントの作成

コンポーネントとは

一つのアクターの中にサブオブジェクトとして追加できる機能です。
コンポーネントは単体では存在できませんが、既存のアクターに設定されたオブジェクトと共存することができ、アクターがコンポーネントの機能にアクセスすることも可能です。

この機能を使い、Widgetの実行結果を別のアクター内で表示させます。

まずは新規アクターを作りましょう。
こちらも通常通り、右クリックでBlueprint Class>Actorを選んで開きます。

画面左側にComponentsというタブがあります。
予めDefaultSceneRootというコンポーネントが入ってますが、
この下に新しいものを追加します。

Add Componentをクリックして、Widgetコンポーネントを検索して選びましょう。

Widgetコンポーネントが追加されました。
ですが、このままではまだ何も表示されません。
このコンポーネントに、先ほど作ったMyWidgetを設定する必要があります。


WidgetコンポーネントのDetailsにUser Interfaceという項目があります。
その中のWidget Classから作成したMyWidgetを選択し、
Draw at Desired Sizeにチェックを入れてください。


これで、ビューポートに作成したWidgetが表示されました。

*この時、Widget内のパネルのアンカーがセンターに無いと、変な位置にずれてしまいます。


それでは、このアクターをレベルに置いてみましょう。

レベル上で、Widgetがオブジェクトとして配置できました。

まとめ

・コンポーネントに追加されたオブジェクトは、サブオブジェクトとして固有の機能を待つ
・コンポーネントを追加する事でアクターから機能を制御する事もできる。


参考:(公式ドキュメント)Widgetコンポーネント
   [UE4]Widget Interactionコンポーネントを使ってVRで触れるUIを制作してみる!