目次
※この記事で使用しているUnrealのVersionは04.23.0 Preview7です。
※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト
動的に変更できるランキングのUI レベル【★★】
今回は、Widgetを使って、よくレースゲームとかであるランキングのUIを作ってみたいと思います。
↓こんな感じ
今回はWidgetを3つに分けて作成します。
まず一つ目のWidgetを作成しましょう。
コンテンツブラウザ左上の「新規作成」から、「ユーザーインターフェース」→「ウィジェットブループリント」を選択します。
作成したら、中を開き以下のようにウィジェットを配置します。
自作UIマテリアルの中身
(特に見た目にこだわらない人は飛ばしても構いません)
Material内のCustomNodeの中身
float2 v2 = abs((UV - 0.5) * 2); float2 v2In = saturate(abs((UV - 0.5) * 2) + StepValue); float OutCurve = step(distance(smoothstep(1 - StepValue,1,v2),float2(0.0,0.0)),1.0); float InCurve = step(distance(smoothstep(1 - StepValue,1,v2In),float2(0,0)),1.0 - StepValue); return float2(OutCurve-InCurve,InCurve);
ここまで出来ましたら、次はブループリントを書いていきます。
関数「SetNameText」の中身
関数「SetRankText」の中身
関数「LerpVector2」の中身(純粋関数)
マクロ「SimpleTimeline_byFloatCurve」の中身
マクロ「SimpleAnimation_Move」の中身
の引数の「Curve Float」は、コンテンツブラウザ左上の「新規作成」→「その他」→「カーブ」を選択し、クラス選択画面で「Curve Float」を選択します。
そして中を開いたら、以下のようなグラフを書きます。
作成したら、マクロの引数に設定してあげれば完了です。
これで、1つ目のWidgetはOK。
2つ目のWidgetを作成します。
このWidgetは、先ほど作成したランキング用のUIを管理するためのWidgetになります。
中には、CanvasPanelWidgetのみを配置しましょう。
そして、そのCanvasPanelは「IsVariable」にチェックを入れましょう。
次に、このWidgetのブループリントを作成していきます。
出来ましたら、最後のWidgetブループリントを作成します。
作成したら、デザイナーウィンドウで、以下のようにウィジェットを配置します。
配置ができたら、ブループリントを書きます。
(ただ単にボタンが押されたら、2つ目に作ったイベントを呼び出すだけです)
ここまで出来ましたら、あとは実際に見てみましょう。
適当なレベルのブループリントウィンドウを開き、以下のように処理を書きます。
これで、あとはプレイを押すだけ。
ウィンドウ上にある「AddRankBox」でランキングに1つUIを追加し、「ShuffleRank」でランダムに順位を入れ替えます。
以上
※この記事のサンプルプロジェクトは以下URLにアップされています。
サンプルプロジェクト