アヒルのある日

株式会社AHIRUの社員ブログです。毎週更新!社員が自由に思いついたことを書きます。

見やすいBlueprintを書きたい

こんにちは、みえないプログラマーです

 

年度も変わってちょっとずつ暖かくなってきました。

 

 

さて、最近はUnreal Engineを使って開発することもあったりするのですが、その際にビジュアル言語のBlueprintを使って機能を実装することも多いです。

 

Blueprintはノードを繋いで行く形でプログラムを作ることができるので、専門のプログラマーでなくとも、実装や調整ができるのが魅力ですが、何も考えずに実装するとなかみがごちゃごちゃして大変なことになりがちです。(そうなってしまうと忘れた頃にバグ修正などで触ったときに頭を抱えてしまうことになります…)

 

ということで、自分がBlueprintを使って実装をする際に気をつけていることをいくつか書いてみようと思います。

 

1. ノードはその実行順を意識して配置する

基本的に、Blueprintは左から右に実行されていくことになります。なので、その流れを崩さないようにしましょう。特に理由がないなら、実行ピンの白い線はまっすぐになるようにしておくと良いと思います。

(例、プログラムに意味はなにもないです)

2. 込み入ってきたら「Sequence」ノードを活用して整理する

プログラムが込み入ってくると、横にひたすら長い形になりがちです。

その際はプログラムの塊ごとに「Sequence」ノードで分割してやると、いい感じにできます。

「Sequence」ノードは出力の実行ピンを上から順番に実行する働きをします。

以下の例の場合、1を実行した後2が実行されます。

(Sequenceの例、やっぱりプログラムに意味は無いです)

3. フロー制御系のノードを活用する

よくある形の処理に、「N回だけ実行したい」とか、「AとBを交互に実行したい」とかいうのがあると思います。

これらは標準の組み込みマクロとして用意されていたりするので、活用してみましょう。

Do OnceとDo N

「Do Once」ノードはその名の通り、1回だけ実行したいときに使います。Tickの最初でだけ通るようにして初期化~と言った形で使うと便利です。「Reset」のピンが実行されると状態がリセットされます。

「Do N」ノードは「Do Once」と違ってN回実行だけ実行したいときに使います。使い方は同じですが、実行回数を指定する「N」と、今何回目の実行かを取れる「Counter」がくっついています。

Flip Flopノード

「Flip Flop」ノードはAとBを交互に実行する動きをします。「Is A」はAが実行されているときにTrueとなります。(つまり、TrueとFalseが交互に出力されることになります。)

実行ごとに交互に処理を切り替えたいときに便利です。

 

Gateノード

「Gate」ノードは状態を持っていて、「Enter」から入って、開いているときだけ「Exit」が実行されるというものです。見た目はややこしいですが、実はそうでもないです。

ノードの状態は「Open」「Close」「Toggle」が実行されることで変わります。機能はそれぞれ名前の通りで、「Open」で開き「Close」で閉じます。「Toggle」が実行されると、状態が切り替わります。

「Start Closed」がTrueだと、ゲートは最初から閉じた状態となります。

 

ほかにも整理するためのテクニックはいろいろあるのですが、今日はこのくらいにしておこうと思います。

 

それではー