More than 1 year has passed since last update.

ブループリント(BluePrint=以下BP)を扱うに当たっては下記のことが特に重要になってくる。

Qiita用.jpg

ゲームでよくある例を挙げるならば、「敵の弾が当たった時」「ライフが0であれば」「死ぬ」というようなものである。状況によってはもちろん「どういう条件で」という部分は省かれることもある。

BPの特徴のうちの1つとしてはCなどのようなのもでは基本的に上から下へプログラムが流れるのだが、BPの場合は左から右へ流れる。まずはこれを抑えていただきたい。
qiita4.jpg

まずBPに関する簡単な用語を説明する。BPはビジュアルスクリプティング言語である。そのため従来のCやJavaのような「文法」の概念が非常に薄い。その代わりに窓と窓を線でつなぐようにしてプログラミングする。その窓を「ノード」という。そしてそのノードの左側にあるのが情報の受け取り口「入力ピン」であり反対側が使った情報の配信口「出力ピン」である。
qiita3.jpg
この入出力ピンのおかげで文法間違いがそうそう起きない。
この入出力には入出力できる値が色で見極めることができる。多くの場合だと、Pawn型は水色、黄色はVector型、緑色はFloat型、赤色はBoolean型などである。その中でも最も重要なのが一番上にある白色のピン、フラグ(※)型である。

qiita5.png

この実行型のピンを特に実行ピン(そのまんま)といい、これによってフラグ(※)の受け渡しをする。

(((※ 本来の正式名所は「フラグ」ではなく「パルス」なのだが、他のサイトなどで見かけたことがなく、C#経験者や、プログラミング経験のない日本人にとっては「フラグ」のほうがイメージしやすいと思うので、ここでは「フラグ」とする。)))

右側の出力側からフラグを送信し、左側の入力側からフラグを受け取る。フラグを受け取ったノードはそのノードの機能を実行し、し終えると出力ピンからフラグをながす。

ここからは少し具体的に見ていこう。

Qiita用.jpg

一番最初にしめした、「いつ」「どういう条件で」「なにかする」、このうちの「いつ」にあたるノードはイベント(Event)ノードだ。上図の見ての通りノードの上端が赤色である。BPでのプログラミングは基本的にこのイベントノードから始まる。ゲーム制作においてよく使うものは上の図の3つだ。
・Begin Play
・ティック(Tick)
・Enter(キーボード)
BeginPlayは読んで字のごとくゲームが始まったときに、ティックはゲーム画面が更新されるたびに(言い換えれば毎フレームに)、EnterはキーボードのEnterキーを押したり離したりしたときに、フラグ型出力ピンからフラグを流す。もちろんEnterキー以外の入力もある。

qiita6.png

次の項目に移る。

どういう条件で、というとC系のを触ったことがある人ならばif文が思い浮かぶと思う。BPにもif文にあたるノードが存在している。
上図の左上のノード「ブランチ」だ。このノードは入力されるCondition(Boolean型)によって真か偽のどちらかにフラグを流す。なお、この図はVer.4.10のものである。それ以前だと"True"か"False"になっている。なおこのノードは検索欄に"if"と入力しても検索に引っかかってくれる。
右上の「Do Ones」は一度だけCompletedからフラグを流すものだ。
左下「シーケンス」はThen0から順番にフラグを流していく。
右下「整数型をオン」は、CのSwitch int にあたる。Selection(Integer型)に入力された数値に従って1つの出力ピンからフラグが流れる。

なお、「いつ」の項目でやったものを「イベントノード」というといったが、こういったブランチなどは

qiita7.png

そして最後の、なにかする、だが、

「「めちゃくちゃたくさんある!!」」

はい、BPはUE4でもともとつかえるC++とほぼほぼ同じことができる。そのためC++でできることほぼすべてをノードにあるためめちゃくちゃたくさんあるわけである。

ほかの二つ「いつ」「どんな条件で」とは違ってその時々で様々なものを使うため「特にこれはどこでも使える万能ノード」というものがない。今回はプログラムのプロトタイプを組む時に役立つ「Print String」を紹介する。

qiita8.png
これもC系を触ったことがある人ならなんとなくわかるかもしれない。フラグが流れ込み起動されると、入力されるIn String(String型)の内容を画面上に表示するというものだ。
前述したがBPにおいては文法ミスがほぼ発生しない。その代りよくあるトラブルの一つとしてコンパイルもうまくいっているのになぜか配列したノードの通りに動かないということがある時はそもそもフラグがちゃんと伝わっていないということがよくある。その確認に非常に役立ってくれるのだ。

これで一応一通りの説明を終わる。次回には具体的にプログラミングに入っていきたいと思う。

もし今までの説明であんまりわからなかった場合は、以下のことだけわかっていれば最悪どうにでもなる(かも?)

qiita9.png

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.