前回はリテラルと演算子を用いて計算結果を表示しました。今回は計算を楽にするために変数を用いて数値を記憶する方法を学びます。
Unityプログラミング講座一覧はこちら
リテラルを使うことの問題点
前回の計算ではリテラルを使用して(数値を直接書き込んで)いましたが、これはかなり不便です。例えば、前回こんな式を書きました。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
Debug.Log(10 + 3);
Debug.Log(10 - 3);
Debug.Log(10 * 3);
Debug.Log(10 / 3);
Debug.Log(10 % 3);
}
}
何が不便なのかというと、10と3が複数回出ているにも関わらず、何度も10と3を記入している点です。数値を10から5に変えたいときに10をすべて5に書き換えなくてはなりません。さらに、5に変えた後で「やっぱり13にしよう」となったらどうなるでしょうか。変更するたびにすべての数値を書き換える必要があります。
変数
この面倒を回避するために、数値を一時的に記憶しておく方法があります。変数は、数値を保存しておくための機能です。
宣言
変数を使うには、その変数を定義する必要があります。変数を定義することを変数を宣言するといいます。
変数を宣言するには以下のように書きます。
変数の型名 変数名;
変数の型名とは、記憶する値の種類を表します。例えば、整数ならint
を用います。
変数名は、変数の名前です。命名規則を守れば自由につけられます。
例として、整数型の変数a
を宣言してみます。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a;
}
}
※前にも述べたように、コンポーネントとスクリプトのファイル名は同じにしてください。
値の代入
変数には値を記憶させることができます。これを代入といいます。
変数に値を代入する際には=
を用います。これは算数の=とは意味が違います。値が等しいのを表すのは前回やったように==
です。絶対に区別して覚えてください。
変数名 = 値;
例として、整数型の変数aに10を代入します。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a;
a = 10;
}
}
また、変数は宣言と同時に値を代入することもできます。こちらのほうが使用頻度が高いです。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a = 10;
}
}
変数をリテラルの代わりに使う
変数は数値を記憶し、計算に使用することができます。以下にいくつか例示します。
整数int
前述の通り、整数にはint
型を用います。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a = 10;
int b = 3;
Debug.Log(a + b);
Debug.Log(a - b);
Debug.Log(a * b);
Debug.Log(a / b);
Debug.Log(a % b);
}
}
10を5に変えたかったらint a = 10;
の部分を1か所変えるだけで済むようになりました。
小数float
小数を使う場合、Unityではfloat
型を用います。リテラルにfをつけるのを忘れないようにしましょう。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
float a = 10f;
float b = 3.5f;
Debug.Log(a + b);
Debug.Log(a - b);
Debug.Log(a * b);
Debug.Log(a / b);
Debug.Log(a % b);
}
}
文字列string
文字列の場合はstring
型を使用します。リテラルはダブルクォーテーション"
で囲みます。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
string a = "Hello";
string b = "World";
Debug.Log(a);
Debug.Log(b);
Debug.Log(a + " " + b);
}
}
上に書いたように+
演算子を使って文字列同士を連結することもできます。
論理型bool
関係演算子の結果true
とfalse
を変数に代入する場合はbool
型を使用します。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
bool a = true;
bool b = false;
Debug.Log(a);
Debug.Log(b);
Debug.Log(a && b); // && は両方ともtrueならtrue
Debug.Log(a || b); // || は片方がtrueならtrue
}
}
複数のbool
値を合わせて利用するときには、論理積&&
と論理和||
がよく使われます。
演算して代入する
代入演算子=
の右側に計算式を書くことで、計算結果を変数に代入できます。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a = 10;
int b = a + 3; // aに3を足した13が代入される
Debug.Log(b);
Debug.Log(a + b);
}
}
では、次のように書くとどうなるでしょうか。
using UnityEngine;
class Test : MonoBehaviour
{
void Start()
{
int a = 10;
a = a + 3;
Debug.Log(a);
}
}
a = a + 3;
は=
を等号だと捉えてしまうと変になります。意味は「変数a
に3を足した値を変数a
に代入する」となります。つまり、a
が10なら3を足した13がa
に代入され、最終的にa
の値は13になります。
変数の値を増加や減少させる処理はよく使われます。そのため、以下の省略した書き方が用意されています。
a += 3; // a = a + 3; と同じ
a -= 3; // a = a - 3; と同じ
a *= 3; // a = a * 3; と同じ
a /= 3; // a = a / 3; と同じ
a %= 3; // a = a % 3; と同じ
特に、変数の値を1増やす、1減らす処理は非常に多いため、それ専用の演算子があります。
a++; // a += 1; と同じ
a--; // a -= 1; と同じ
++
はインクリメント、--
はデクリメントと呼びます。
まとめ
この記事では、変数を学びました。変数を使うと値を変更するときに書き換えが少なく楽になります。代入については等号と混乱しないように注意しましょう。
Unityプログラミング講座一覧はこちら