Daiginjoのゲーム制作ブログ(UE4,C++)

ゲームの作り方から私用のメモをまとめたブログです

UE4においての繰り返し処理

いよいよプログラミングの肝である繰り返しです

 「PrintString」を使ったことがない方は前回の記事を参考に予習してきてください。
UE4においての四則演算

1. 下準備

 前回同様「UE4_Study」プロジェクトを使用します。
 「BP_PrintString」を開いて、下の画像のように整理してください。

f:id:bigpaison:20171214232049p:plain

2. 繰り返し

 C言語で以下の様な処理をUE4で表現していきます。

#include <stdio.h>
int main(void) {
	int i;
	for (i = 0; i <= 5; i++) {
		printf("%d\n",i);
	}
	return 0;
}


 UE4においての繰り返しは基本的に「ForLoop」を使います。
このノードは、右クリックを押して「ForLoop」と入力してください。
 また、「PrintString」ノードを1つ準備してください。


f:id:bigpaison:20171214234952p:plain


 そしたら、ノードをつなげましょう。また、「ForLoop」内の数字を「0~5」に設定します。

f:id:bigpaison:20171214235255p:plain


 「コンパイル」と「保存」を押してください。そしたら実行してみましょう。

f:id:bigpaison:20171214235540p:plain

   きちんと繰り返しがされましたね。

3. 配列

  続いて、繰り返しの本領が発揮される配列と組み合わせて使ってみましょう。まずは、配列の使い方です。
  前回に変数を作ったのと同じように「Integer」型の変数を作ってみてください。ここでは「Array」という名前を付けておきましょう。そして、「コンパイル」と「保存」を押してください。
f:id:bigpaison:20171215000321p:plain
  
  黄色の四角で囲んだところをクリックして「配列」の設定に変更してください。
 そして、「コンパイル」と「保存」を押してください。
f:id:bigpaison:20171215000719p:plain

  これで、配列を宣言することができました。続いて初期化です。
  「+」を押してデフォルト値を増やすことができるので、増やしてみてください。
f:id:bigpaison:20171215001116p:plain

  次に、配列の中の値を取り出してみましょう。「Array」をイベントグラフ上に配置して「Get (a copy)」ノードをつなげます。そしたら、「2」の値にして「PrintString」ノードにつなげてみましょう。
f:id:bigpaison:20171215001704p:plain
  
 「コンパイル」と「保存」を押してください。そしたら実行してみましょう。

f:id:bigpaison:20171215001902p:plain

  「Array」の「2」番目の値が表示されました。

4. 繰り返し + 配列

  いよいよ、C言語との比較です。

#include <stdio.h>
int main(void) {
	int Array = [0, 2, 3, 1, 5];
	for (i = 0; i <= 5; i++) {
		printf("%d\n",Array[ i ]);
	}
	return 0;
}


  UE4において配列にアクセスするのは非常に簡単です。
  「Get (a copy)」に配列番号を渡すとその値を取り出すことができます。
  3.で使った「Array」を使いまわします。ここで「Array」は「4」まで配列番号が割り当てられているので「ForLoop」は「0~4」までとします。

f:id:bigpaison:20171215002625p:plain

このようにノードをつなげます。
コンパイル」と「保存」を押してください。そしたら実行してみましょう。

f:id:bigpaison:20171215003126p:plain

  また、逐一「ForLoop」の数値を指定するのは面倒なので、ノードで配列の長さを取得して「ForLoop」の幅を決めましょう。ここでは「Array」から「LENGTH」をつなげます。そしたら、「-1」してやります。(ここでの「LENGTH」は、「0~4」の「5」が取り出されるため「-1」することによって配列の長さに設定することができます。)

f:id:bigpaison:20171215003649p:plain

  もう一つ「ForEachLoop」を使うやり方があります。これは、「ForEachLoop」ノードの「Array」部分に配列をつなげば使うことができます。「Array Element」より配列の値も取り出すことができます。

f:id:bigpaison:20171215004619p:plain

  これで、繰り返しの処理が分かったと思います。