前回の何度も繰り返すfor文の説明・使い方はどうでしたか。多分わかっていただけたはずです(゚∀゚)
今回は「もし〇〇したら、〇〇する」ということを設定できる「if」文を説明します。
「if文」は任意の条件のときに実行したい処理を設定できる
この「if」というのは英語の「if」と同じです。「もし〇〇したら~〇〇する」という、任意の条件のときに実行したい処理を設定できます。
例
- 主人公の体力が0以下になったら、ゲームオーバーの画面に移動する
- バットにボールが接触したら、ボールが飛ぶようにする
- ボタンを押したら、ゲーム画面にいく
- もしプレイヤーがステージ外にいったら、リスタートする
まあ「if文」はとにかく使いますね。ここでしっかり理解してほしいです。
C#での「if」文の使い方
●とりあえず2通りの「if文」の使い方
①
if(条件式){
// 条件式を満たしたときに実行
}
②
if(条件式){
// 条件式を満たしたときに実行
} else {
// 条件式を満たさないときに実行
}
①は条件式を満たしたときの処理のみ書いてあります。もし条件式を満たさなければ、そのif文はスルーされます。
②条件式を満たしたときの処理と条件を満たさなかった場合の処理を書いています。
とりあえずあとにあるスクリプトをみればわかると思います。
条件には関係演算子を使ってみる
演算子 | 例 | 意味 |
== | A == B | AとBが等しい場合真 |
< | A < B | AがBより小さい場合真 |
<= | A <= B | AがB以下の場合真 |
> | A > B | AがBより大きい場合真 |
>= | A >= B | AがB以上の場合真 |
!= | A != B | AがBと等しくないとき真 |
こやつをつかってみますね。
①「if」文を使ってスクリプトを書くよ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
int num = 60; // 変数宣言と代入
// 「if」文を利用
if(num > 50)
{
Debug.Log("ダイエット失敗!!"); // Consoleに表示
}
}
// Update is called once per frame
void Update()
{
}
}
結果は「ダイエット失敗!!」とでます。自分でスクリプトを書いて、実行してみてください。
●流れ
- 「num」変数に「60」を代入
- 「if」文の条件式は「numが50以上だったら~」であるため、条件式を満たす
- 「if」文の中身が実行される
このような流れになっています。
①「if」文を使ってスクリプトを書くよ
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
int num = 60; // 変数宣言と代入
// 「if」文を利用
if(num > 70)
{
Debug.Log("ダイエット失敗!!"); // Consoleに表示
} else
{
Debug.Log("よく頑張った"); // Consoleに表示
}
}
// Update is called once per frame
void Update()
{
}
}
結果は「よく頑張った!」とでます。自分でスクリプトを書いて、実行してみてください。
●流れ
- 「num」変数に「60」を代入
- 「if」文の条件式は「numが70より上なら~」であるため、条件式を満たさない。
- 「else」の中身が実行される
このような流れになっています。
「if-else」文:条件を追加する
ここまで説明してきた「if」文だと、1つ条件しか追加できません。体重が目標体重に近いときは、「あと少しだ」といってやりたいものです。
複数の条件を追加するのには「if-else」文を使います。
「if-else」文の使い方
if(条件式A){
// 条件式Aを満たしたときに実行
} else if (条件式B){
// 条件式Bを満たしたときに実行
}
// else if文を追加しても良い。制限なし。
・
・
・
・
else if(条件式X){
// 条件式Xが成り立つとき実行
} else {
// どの条件式も満たさなかった場合に実行
}
とりあえず「体重が70」とき、「体重が60」のとき、「体重が50」のとき、どうするのかという処理を書くことができます。
「if-else」文を使ったスクリプトを書く
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
int num = 65; // 変数宣言と代入
// 「if」文を利用
if (num < 40)
{
Debug.Log("それは病気よ");
} else if(num < 60)
{
Debug.Log("よく頑張った");
} else if (num < 70)
{
Debug.Log("もうちょっと痩せてね");
} else
{
Debug.Log("痩せよう");
}
}
// Update is called once per frame
void Update()
{
}
}
結果は「もうちょっと痩せてね」とでます。自分でスクリプトを書いて、実行してみてください。
●流れ
- 「num」変数に「65」を代入
- 最初の「if」文の条件式は「numが40より下なら~」であるため、条件式を満たさない。次の式にいく。
- 次の「else- if」文の条件式は「numが60より下なら~」であるため、条件式を満たさない。次の式にいく
- 次の「else- if」文の条件式は「numが70より下なら~」であるため、条件式を満たす。
- Consoleに「もうちょっと痩せてね」と表示られる
このような流れになっています。「num」の値をかえたりして、いろいろ試してみてください。
変数は使える範囲は決まっている【スコープ】
変数は、その変数を宣言をした行を含む「{}」内でしか使うことができません。この変数の使える範囲を変数のスコープといいます。
これからエラーがでるかもしれませので、みておいてください。
スコープを見てみる
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour
{
// Use this for initialization
void Start()
{
int x = 5; // 変数宣言と代入
if (x > 0)
{
int y = 2; // 変数宣言と代入
Debug.Log(x);
Debug.Log(y);
}
Debug.Log(y);
}
// Update is called once per frame
void Update()
{
}
}
(このスクリプトはエラーが起こります)
変数は、その変数を宣言をした行を含む「{}」内でしか使うことができません。
「x」変数は、「x」変数を宣言をした行を含む「{}」内でしか使えません。つまり、「{}」内でしか使えません。
「y」変数は、「y」変数を宣言をした行を含む「{}」内をしか使えません。つまり、「{}」内でしか使えません。
もしエラーが起きたら、スコープを疑ってみてください。
まとめ
- 「if」文では「もし〇〇なら、〇〇する」ということを設定できる
- 変数は、その変数を宣言をした行を含む「{}」内でしか使うことができない
- 変数の使える範囲を変数のスコープという
では次の配列の説明と使い方にいきましょう。
コメント