top of page
BG2.png
Title_BLOG.png
Blog_Explanation.png
執筆者の写真Necocai_Racu

UE4_UIのラーニング~その4 変数~

更新日:2021年1月13日

【前】


UE4_UIのラーニング~その3 ウィンドウ~



ここまでやった人は

もしかしてこう思ってるのではないでしょうか?


「ウィンドウのテキスト変えたい!」

「ボタンの文字変更できないの?」


そうでしょう!そうでしょう!


では今回はテキスト変更の方法…

をちょっと凝ってデザイナーで直接文字指定ではなく、

別の場所(親WBP)から送られてくる情報を受け取り

反映させるやり方を説明したいと思います。


まず、ボタンから… 「 WBP_Btn 」を開きます。


グラフで編集するために「 Txt 」を選択し詳細の

Is Variableにチェックを入れましょう。

グラフに移動し、

変数に上記が追加されていることが確認できたら

ドラッグアンドドロップして追加します。

次にカスタムイベントなど

下記のように繋いでいきます。

  • Set Text  →Textを設定できるノード。   In Text内に設定したテキストを   ターゲットに繋いだ先に反映できます。

直接In Textに文字を入れてもテキストは変わりますが

今回は最初に書いた通り親WBPで文字を変更します。


カスタムイベントを選択し詳細を見ましょう。

インプットの横「 +新規パラメータ 」を押します。

そうするとカスタムイベントの下に

なにかが追加されます。

これは引数といいます。


内容は下記に合わせて変更して

In Textに繋いでください。

これで「 WBP_Btn 」の設定は完了です。


次に親WBP(WBP_UI)を開きます。

グラフを開いて下記のように繋げてください。

(イベント Pre Constructの先に繋ぎます)

これでボタンの文字変更が

親WBPでできるようになりました!

次にウィンドウの文字を変更してみましょう。


今回はボタンを押したら

開いたウィンドウの文字が変更している…

という感じにします!


まず前準備。

ボタンと同様に「 WBP_Window 」を開き、

グラフで編集するために「 Txt_Title 」「 Txt_Txt 」を選択し詳細の

Is Variableにチェックを入れましょう。


グラフを開き

カスタムイベントを用意し、

インプットに引数を+して

下記のように繋いでみましょう。

(線をダブルクリックすると○がでて

線を整理しやすくなります)

これで準備は完了です!


次に親WBP(WBP_UI)のグラフを開きます。

早速ノードを繋げるその前に

ちょっとだけ準備をします。


変数の横「 +変数 」を押し

変数を追加しましょう。


この変数というのは収納箱的なもので

設定したものを保存しておいてくれる優れものです。


今回は配列(後で説明)から

とってくるものを指定するために使います。

早速設定します。


変数の型をIntegerに設定します。

収納箱(変数)は便利なものですが

収納できるものが型によって違います。

  • 整数ならInteger

  • 文字ならText

などなど、

状況に合わせて変えていきます。


また、一番下のデフォルト値が

0になっていることを確認しましょう。

ボタンを押した先のカスタムイベント

「 CE_Btn_Clicked 」の先に下記のように繋ぎます。


まずテキストの設定。

テキストが変更するタイミングを

アニメーションさせる前に変更させたいので

(切り替えを見せないように)

「 CE_Window_In 」のまえに設定を割り込ませます。


変数から「 WBP_Window 」を

ドラッグアンドドロップして

カスタムイベント「 CE_Window_Text 」を呼びます。


呼び出したカスタムイベントから

線を伸ばし配列と検索し「 (参照)を取得 」を選択します。

そうすると「 GET 」と書かれたノードが現れます。


「 GET 」の左側、上の四角から線を伸ばし

再度配列と検索し「 配列を作成 」を用意します。

(ピンを追加で左側の列を増やせます)

  • 配列  →収納箱の大きい版。   複数の情報を収納できます。   順番は0から始まる。

  • GET  →左下の丸いピンに整数(Integer)を入れることにより   配列からその番号の情報を取り出すことができる。   今回は「 ClickedNum 」を繋ぎましょう。

次に変数の設定について説明します。


一番上のセットというのは

ClickedNumという収納箱に数字を設定するためのノードです。


ここに通知が来たときに

前回の「 ClickedNum 」+1になるようにしています。

具体的な流れは下記のような感じ。

  • ボタンを押す  →配列から「 ClickedNum(デフォルト値0) 」を取り出しテキストを反映   →変数に+1する、「 ClickedNum(1) 」になる    →ウィンドウが表示される     →ボタンを押す      →配列から「 ClickedNum(1) 」を取り出しテキストを反映       →変数に+1する、「 ClickedNum(2) 」になる        →ウィンドウが表示される         → …

これでボタンを押したら

テキストが変更されて表示される仕組みは完成です!


が!!!!!!!!!!!!!!!!!!!!!

ちょっと待って!

実は配列に関してとっても重要なことがあります!


なんと配列の中に入っている番号以外の数字がくると

クラッシュしてしまいます!


つまり

ボタンを押すたび+1される上記の仕組みは

たくさんボタンを押すと99とか無限に増えていくになる。

=配列以上の数字が「 GET 」に流れる。 =クラッシュしてしまう!!!!!!!!!!!


なので下記の

配列にある最後の数字と同じになったら

「 ClickedNum 」をリセット(0にする)仕組みを作ります。


白くなっているところが変更点です。

(コメントを残せるもので

ノードを選択し「 C 」を押すと出てきます)

  • ブランチ  →下の赤いピンによって   通知を送る先を変えてくれるノード。   TrueかFalseで分岐。

  • ==  →左側に繋いだノードが同じもの(今回は同じ数字)   だった場合Trueを右から出してくれます。   それ以外はFalseを流す。

  • LAST INDEX  →配列の順番の最後の数字を教えてくれる。   ※※※※数ではないので注意※※※※   ※下記のように配列に3つ入っていても※   ※最後の数字なので2がきます※


これでやっと完成です!

動画のようになっていれば問題ないです。


(追記)

下記の3点を修正しました。

ノードって難しい…!

  • 変数の計算を先にし、 配列より大きい数にならないための処理を後に。 (ほかの人が見たときに見やすくするため)

  • 万が一同数以上の数字がきてしまった場合を想定し、 「 == 」ではなく「 > 」を使用。 (上に繋いだ数字 > 下に繋いだ数字の時Trueを右から出す)

  • 変数の名前を変更。 (ClickedNumはクリック数という意味で名前を付けたけど 配列分でリセットしちゃうのでわかりやすいのに変更)




Comments


bottom of page