今から始めるUE4極め本⑧ 〜ブループリント応用編〜

UE4極め本

第18章と第19章はブループリントの応用編ともいえる内容で、ここまでをマスターすればひとまずミニゲーム程度のゲームであれば自分で作ることができるようになります!

「極め本」においてもここでブループリントの章は終了となりますので、若干難易度は上がりますがゆっくりと進めてみてください!

第18章 生と死と

ゲームをプレイ中に新しいアクターを生成したり削除したりする方法を学びます。

また、前回のイベントディスパッチャーの応用として、ゲームプレイ中にイベント通知を受け取るようにするバインドの機能を学びます。

18.1.1 ロケーター

翻訳が異なる箇所
P.291
[ゲーム]>[クラスからアクタをスポーンします]は、UE4.24.2では[Game]>[Spawn Actor from Class]という表記になっています。

18.3.1 独自のイベントRespawnPlayerを作る

翻訳が異なる箇所
P.298
[イベントを追加]>[カスタムイベントを追加…]は、UE4.24.2では[Add Event]>[Add Custom Event…]という表記になっています。
最新版と異なる箇所
P.298
[Find Player Start]ノードに[Incoming Name]という引数が増えていますが、今回は空白のままで問題ありません。

18.3.3 イベントをイベントにバインドする

翻訳が異なる箇所
P.300
[Game]>[イベントをOnDestroyedとバインド]は、UE4.24.2では[Game]>[Bind Event to On Destroyed]という表記になっています。
最新版と異なる箇所
P.301
[Bind Event to On Destroyed]ノードの赤色のデリゲートピンを[RespawnPlayer]ノードに繋ごうとしても繋ぐことができません。

解決する方法としては、まず先程作成した[RespawnPlayer]ノードを一旦削除します。次に、[Bind Event to On Destroyed]ノードの赤色のデリゲートピンを伸ばし、なにもないところで[左クリック]を離すことで表示されるメニューから、[Add Custom Event…]を選択します。

これによって作成されるカスタムイベントの名前を再び[RespawnPlayer]にします。(名前を変更出来ない場合は、過去の[RespawnPlayer]ノードが残っているので、一旦[Compile]ボタンを押してコンパイルして下さい)

作成されたカスタムイベントには[Destroyed Actor]という引数が増えています。これは、UE4のバージョンアップによって、[Bind Event to On Destroyed]ノードから呼ばれるイベントの引数が変わったためです。
初めから作成してあった[RespawnPlayer]ノードに赤色のデリゲートピンを繋ぐことができなかったのは、このように引数が変わってしまっていたために対応していないと判断されたからです。その際は、慌てずに何もないところで新たにカスタムイベントを作成してみると、今回のように引数が変わっていることに気付くことができます。

第19章 リワード、そしてリスク

この章はプログラミングでいうところの「変数」と「関数」を学びます。

どちらもプログラミングを初めて学んだ頃は、その概念を理解するのに苦労した記憶があります。UE4のブループリントビジュアルスクリプティングは、そうした要素もパズルのピースのように視覚化されており、文字だけのプログラミング言語よりもイメージしやすいのではないかと思います。

まずは無理に理解しようとするよりも、本の通りに手を進めることで自然と身についていくと思います!

19.1.3 変数の種類

翻訳が異なる箇所
P.306
[変数の種類]>[整数]は、UE4.24.2では[変数の型]>[Integer]という表記になっています。

翻訳が異なる箇所
P.307
変数の取得/設定は、UE4.24.2では[Get NumOfCoins]/[Set NumOfCoins]という表記になっています。

翻訳が異なる箇所
P.310
[変数へ昇格]は、UE4.24.2では[Promote to variable]という表記になっています。
翻訳が異なる箇所
P.316
[詳細]パネルの[入力]カテゴリは、UE4.24.2では[インプット]カテゴリという表記になっています。

19.3.4 タイマーの活用

最新版と異なる箇所
P.319
[Set Timer]ノードは、UE4.24.2では[Set Timer by Event]ノードと[Set Timer by Fuction Name]ノードの2種類があります。ここでは[Set Timer by Function Name]ノードを使用します。

19.4 さまざまなサブルーチンを活用する

カスタムイベント関数、そしてここで学ぶマクロは、「処理をまとめる」という意味では同じように見えるので、どの場面でどれを使えばいいのか、初めのうちは判断がしづらいと思います。また、今回登場していませんがインターフェースという仕組みもあります。

正しく使い分けるにはそれぞれの特性を理解する必要がありますが、きちんと使い分けることができればブループリントを使いこなしてると言えると思います!

ひとまず現段階では本書にある通り、まずはカスタムイベント、出力が必要ならば関数にする。ライブラリは関数ライブラリを使う。という方針で間違いありません。

ある程度理解できたと感じた際には、以下の記事を参考に使い分けを意識してみるとよいかと思います。

わんちゃん
私は今でもどれを使うべきか迷ってしまいます!

19.4.3 スプリントのリスクを完成させる

最新版と異なる箇所
P.329
ここでも先ほど同様、[Set Timer]ノードは[Set Timer by Fuction Name]ノードに変わっていますのでご注意ください。

まとめ

ここまでで本書におけるブループリントの学習は以上です。どうだったでしょうか!難しかったでしょうか?

しかし本当の意味で難しいのは、いざ自分で一からゲームを作ろうとしたときに、どんな変数を用意するか、どんなイベントや関数を用意するかを考え(設計)、そして組み上げていくことです。

しかしそれがゲーム制作の一番楽しいところでもあるので、ぜひ何度も読み返して使いこなせるように頑張ってください!

わんちゃん
次回は物理エンジンの世界に突入します!