UE4はじめました。 -ブループリント入門編(5. ループ処理)-

# 概要
今回はループ処理(For文)について綴ります。
ついでに配列についても。

そろそろ入門編を抜けられるでしょうか…？

# 実践
## ループ処理
### 1. 変数(配列)の用意
題材がループなので、今回はint配列を使ってみるよ！

いつも通り、左のメニューから変数を追加してね。
![ue_01.png](https://qiita-image-store.s3.amazonaws.com/0/97611/21924245-a9cf-51fd-1b70-1df0d974ff2e.png)

右のメニューで、マークされたアイコンをクリックすると配列型にすることができるよ！
![ue_02.png](https://qiita-image-store.s3.amazonaws.com/0/97611/e7141234-0f20-e571-dc31-582d64795a83.png)

![ue_03.png](https://qiita-image-store.s3.amazonaws.com/0/97611/a4dd4fa5-fb32-fb9b-8fab-158573617815.png)

コンパイルして、配列の要素と初期値を設定してね！
![ue_04.png](https://qiita-image-store.s3.amazonaws.com/0/97611/dc53880a-6f8b-1dd9-075d-8861e810a702.png)

こんな感じ。
![ue_05.png](https://qiita-image-store.s3.amazonaws.com/0/97611/c35dbab6-9cd2-038e-2eee-8593e63b210c.png)

### 2. 変数の配置
用意した変数をイベントグラフ上に配置するよ！
![ue_06.png](https://qiita-image-store.s3.amazonaws.com/0/97611/52192553-c91b-63a2-1781-e0f91010de35.png)

### 3. For文の配置
いよいよFor文の配置だよ。

イベントグラフ上で右クリックして、`ForLoop`を選んでね！
![ue_07.png](https://qiita-image-store.s3.amazonaws.com/0/97611/c168b698-2455-9d2c-2cff-34fa8e9f98af.png)

できたかな？
![ue_08.png](https://qiita-image-store.s3.amazonaws.com/0/97611/c81e7c25-983a-ff0e-1ef0-8c236eb13a76.png)

`BeginPlay` と `ForLoop` を繋いでね！
![ue_09.png](https://qiita-image-store.s3.amazonaws.com/0/97611/a6c5d463-a025-4d3a-9b7c-b0f06c7971a2.png)

### 4. For文の設定
次に、For文に与える情報を設定するよ。

`First Index` にループの要素番号の開始値(0)を設定してね。
![ue_10.png](https://qiita-image-store.s3.amazonaws.com/0/97611/cd9902d2-f37d-94be-1c1b-8580ce1acec5.png)

よくあるループの、 `for( i = 0; i < length; ++i )` の `i = 0` の部分だね！

<br>
今度は、 `i < length` の `length` にあたる部分を設定するよ。
![ue_11.png](https://qiita-image-store.s3.amazonaws.com/0/97611/1118c3f2-706c-5c43-adcf-a583cc18a250.png)
配置したint配列の右からドラッグを開始すると、関連ノードが作れるよ！

![ue_12.png](https://qiita-image-store.s3.amazonaws.com/0/97611/d9d1e44a-1bdd-c142-7e18-c7086e3786aa.png)
クリックを離すとメニューが出るから、
`ユーティリティー` -> `配列` -> `Last Index`
を選んでね！

OK？
![ue_13.png](https://qiita-image-store.s3.amazonaws.com/0/97611/dc8284a0-240c-77be-663e-67a958c032e9.png)

`Last Index` を `ForLoop` の `Last Index` に繋いでね！
![ue_14.png](https://qiita-image-store.s3.amazonaws.com/0/97611/3871d1a8-824f-3c79-e4cf-aee5e81f64a7.png)

これで `for( i = 0; i < length; ++i )` の部分は完成だよ！

### 5. ループ内処理の設定
For文の設定が終わったら、次は反復する処理内容を用意するよ。

```cpp
for( i = 0; i < length; ++i )
{
    // ココ！
}
```

<br>
さっきと同じように、int配列の右からドラッグを開始してね。
![ue_15.png](https://qiita-image-store.s3.amazonaws.com/0/97611/03ef5986-b7ef-ddc7-90f9-3b42397c3b9c.png)

クリックを離して、メニューから、
`ユーティリティー` -> `配列` -> `Get`
を選んでね！
![ue_16.png](https://qiita-image-store.s3.amazonaws.com/0/97611/84f92206-04e9-a065-9295-aef996836170.png)

できたかな？
![ue_17.png](https://qiita-image-store.s3.amazonaws.com/0/97611/633ae1db-4512-fc31-3774-8d9b1cf35014.png)
これは、 `intArray[]` にあたる処理だよ。

`intArray[]` には要素番号が必要だよね！

![ue_18.png](https://qiita-image-store.s3.amazonaws.com/0/97611/b7b1b552-bf93-9ce5-0db3-2f680de84b06.png)
`ForLoop` の `Index` と `Get` の左側を繋いでね！

これで `intArray[Index]` の出来上がり！

<br>
最後に `Print` を用意して、`intArray[Index]` を与えよう！

`Print`関数を用意…。
![ue_19.png](https://qiita-image-store.s3.amazonaws.com/0/97611/240c5339-0547-2e86-8042-31263f2a6e36.png)

![ue_20.png](https://qiita-image-store.s3.amazonaws.com/0/97611/36afe0ed-cf69-0d81-785d-b313adc33c67.png)

![ue_21.png](https://qiita-image-store.s3.amazonaws.com/0/97611/1455523b-c5a3-91ac-0172-7af7818c038d.png)

`intArray[Index]` を与えて…。
![ue_22.png](https://qiita-image-store.s3.amazonaws.com/0/97611/8f9593b4-5ea2-993b-26b7-b041cee56e12.png)

![ue_23.png](https://qiita-image-store.s3.amazonaws.com/0/97611/8ea94193-157b-c9e1-830e-4813918a370e.png)
これで完成！！

### 6. 実行！

![ue_24.png](https://qiita-image-store.s3.amazonaws.com/0/97611/b674b264-d3b0-4464-3433-8fb17ca2c6bb.png)

int配列の中身が順に表示されれば成功！


# 解説
上でだいたい書いちゃったけど、今回の処理はこんな感じ！

```csharp
int[] intArray = { 10, 20, 30, 40, 50 };

for( int i = 0; i < intArray.Length; ++i )
{
    Console.WriteLine( intArray[i].ToString() );
}
```


とっても簡単ね！

※厳密には `for( int i = 0; i <= 4; ++1 )` かな？

# シリーズ
- [UE4はじめました。 -ブループリント入門編(1. "Hello world")-](http://qiita.com/sango/items/94fa26f2fe92da4be0e6)
- [UE4はじめました。 -ブループリント入門編(2. 変数の取り扱いと簡単な計算)-](http://qiita.com/sango/items/a657a53ad869b8b95c05)
- [UE4はじめました。 -ブループリント入門編(3. もう少し複雑な変数の取り扱い)-](http://qiita.com/sango/items/df586e9ec27c3e1337a1)
- [UE4はじめました。 -ブループリント入門編(4. if文)-](http://qiita.com/sango/items/ef3be6cd789b3c9eb466)