解説

変数を用いて数値を記憶する

前回はリテラルと演算子を用いて計算結果を表示しました。今回は計算を楽にするために変数を用いて数値を記憶する方法を学びます。

Unityプログラミング講座一覧はこちら

Unityプログラミング講座
ゲームエンジンUnityを使ってゲーム制作を始めようと思っている人へ向けた解説記事です。初心者が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

関係演算子の結果truefalseを変数に代入する場合は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プログラミング講座一覧はこちら

Unityプログラミング講座
ゲームエンジンUnityを使ってゲーム制作を始めようと思っている人へ向けた解説記事です。初心者がUnityをインストールするところから始めてゲームを制作するのに必要な知識をできる限りステップバイステップでまとめるつもりです。
タイトルとURLをコピーしました