UE4はじめました。 -ブループリント入門編(4. if文)-


# 概要
[前回](http://qiita.com/sango/items/df586e9ec27c3e1337a1)で入門編はおしまいと言ったな。あれは嘘だ。

まだ条件分岐やループもやってないのに入門編を抜けられる訳がないですね。
すっかり失念していました…。

と言うわけでもうしばらく入門編続きます。

今回は条件分岐について綴ります。

※検証環境は Unreal Engine 4.9.x です。

# 実践
## 条件分岐

今回は空のレベルから始めるよ。
![ue_01.png](https://qiita-image-store.s3.amazonaws.com/0/97611/00439637-39f9-962f-f1a4-40f128028488.png)

### 1. 開始地点を配置
今までと同じように、イベントグラフ上で、 `右クリック` -> `イベント BeginPlay` を選んでね！
![ue_02.png](https://qiita-image-store.s3.amazonaws.com/0/97611/26d7b691-0a29-39fe-f521-f89750a8a713.png)

### 2. 分岐ポイントの配置
次は処理の分岐を行なうノード(?)を配置するよ。
![ue_03.png](https://qiita-image-store.s3.amazonaws.com/0/97611/ef7fb775-e125-d62f-4595-2528153e78c0.png)
`右クリック` -> `ブランチ` を選んでね！

![ue_04.png](https://qiita-image-store.s3.amazonaws.com/0/97611/f4cbf856-6d6d-d2bf-3bff-c290f73ec5ad.png)
できたかな？

### 3. 条件式の配置
分岐ポイントに与える条件式を選ぶよ。
今回はint用の `>=` を使ってみるよ！
![ue_05.png](https://qiita-image-store.s3.amazonaws.com/0/97611/24e3d3cf-0cf4-2c3a-eeef-983bcf9e9cf9.png)

OK？
![ue_06.png](https://qiita-image-store.s3.amazonaws.com/0/97611/af801e2f-5cf3-6209-0d53-28291387f5dd.png)

### 4. 比較する変数の用意
ちょっと順序が前後するけど、条件式に与えるint変数を2つ用意するよ！

画面左側のメニューから変数を追加してね！
![ue_07.png](https://qiita-image-store.s3.amazonaws.com/0/97611/4c5e6ffe-82fe-4934-2d48-91ba9d91f0f0.png)

2つ…。
![ue_08.png](https://qiita-image-store.s3.amazonaws.com/0/97611/ed2c026d-ecbd-240e-cf10-fbac22287720.png)

コンパイルして、好きな初期値を設定してね！

1つ目は「100」
![ue_09.png](https://qiita-image-store.s3.amazonaws.com/0/97611/d9fd4829-2d70-db03-7518-ccf9c9c2b531.png)
2つ目は「50」
![ue_10.png](https://qiita-image-store.s3.amazonaws.com/0/97611/c8e37ec7-e09a-5d4d-9f80-96d0ef7bd22e.png)
にしてみたよ！

### 5. 処理フローの繋ぎ込み

ここで一旦、今配置されているノードをつないでみるよ。

![ue_11.png](https://qiita-image-store.s3.amazonaws.com/0/97611/e5c262fe-8a63-6026-4f07-3efa23c3f7ac.png)
※一緒にさっき用意した変数2つもゲッターとして配置してね！


配置&繋ぎ込み完了後はこんな感じ。
![ue_12.png](https://qiita-image-store.s3.amazonaws.com/0/97611/d690e2f8-fd72-c47a-aae2-f72dc2aa5d42.png)

### 6. 分岐後の処理を追加

最後に分岐後の処理を追加するよ！

![ue_13.png](https://qiita-image-store.s3.amazonaws.com/0/97611/f2bf08e0-d5de-dce3-c11e-8d5c588b6e16.png)
`Print`関数を2つ配置してね！

![ue_14.png](https://qiita-image-store.s3.amazonaws.com/0/97611/fc85506b-591f-faa8-6739-c861013b20db.png)

ブランチからノードを繋ぐよ！
![ue_15.png](https://qiita-image-store.s3.amazonaws.com/0/97611/8db80b1c-ceda-6ff2-793a-0593899ec115.png)

<br>
true(真)の場合とfalse(偽)の場合の文字列を設定してね！
![ue_16.png](https://qiita-image-store.s3.amazonaws.com/0/97611/0fb11a41-a5db-e866-faad-aaf8452e11c4.png)


### 7. 実行！

![ue_17.png](https://qiita-image-store.s3.amazonaws.com/0/97611/8e5ff3ad-3dd4-d9c8-6cbf-2820d23a19a8.png)
変数Aが変数Bより大きかった場合は、true(真)のPrintが実行されるよ！

### 8. 変数の初期値を変えてみる
変数Aが変数Bより小さくなるように値を変更してみるよ！
![ue_18.png](https://qiita-image-store.s3.amazonaws.com/0/97611/d2c755f3-42d7-f505-f95f-b70efe80b56e.png)

### 9. 実行！！
![ue_19.png](https://qiita-image-store.s3.amazonaws.com/0/97611/2ff2b3a0-f49d-c0d9-8c8b-b88db0cfd726.png)
今度はfalse(偽)のPrintが実行されたね！

# 解説
`ブランチ` が `if()` で、 `条件式(演算)` が `if文の中身` と考えれば、とっても簡単ね！

今回の例では、

```cpp
int A = 100, B = 50;

if( A >= B )
{
    printf( "AはB以上だよ！" );
}
else
{
    printf( "AはBより小さいよ！" );
}
```

だね！

# シリーズ
- [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)