前回の記事では、Startメソッド内で変数を宣言していました。これにより、Start内で変数を使用できました。ここでは、メソッドより外側のクラス内で変数を宣言することを学びます。
Unityプログラミング講座一覧はこちら

フィールド変数
変数をクラスに宣言する
変数はクラスのメンバとしても宣言することができます。クラス内に宣言した変数はメンバ変数やフィールドと呼ばれます。
変数の宣言方法はメソッド内で宣言するのとほとんど変わりません。
using UnityEngine;
class Test : MonoBehaviour
{
    // メンバ変数の宣言
    int a = 0;
    void Start()
    {
        Debug.Log(a);
    }
}
※前にも述べたように、コンポーネントとスクリプトのファイル名は同じにしてください。
メンバ変数をUpdateメソッドで利用する
メソッド内で宣言した変数はそのメソッド内でしか使用できませんが、メンバ変数は複数のメソッドで使用できます。
メンバ変数をStartメソッドではなくUpdateメソッドでも使用してみましょう。UpdateメソッドもUnityのビルトインメソッドの一つです。Updateメソッドは毎フレーム呼ばれます。
フレームとは動画を構成する1つ1つの静止画を表します。動画はパラパラ漫画のように何枚もの画像を高速に切り替えることによって動いているように見せています。アニメなどではイラストレータが各フレームを作成しますが、ゲームではコンピュータが計算してフレームを自動的に作成しています。
1秒間に何枚の画像を切り替えるかを1秒当たりのフレーム数としてFPS(Frame per Second)で表します。現在のゲームでは60FPSが多く、これは1秒間に60枚の画像が使われることを意味します。
Updateメソッドは毎フレーム、つまり、60FPSなら1秒間に60回呼ばれるメソッドになります。Updateメソッドは引数なし、戻り値なしのメソッドなので以下のようになります。
using UnityEngine;
class Test : MonoBehaviour
{
    int a = 10;
    void Update()
    {
        a++; // aの値を1増加させる
        Debug.Log(a);
    }
}

ゲームオブジェクトにアタッチして実行してみましょう。コンソールビューに表示される値が増加していくのが確認できます。
Updateが1度呼ばれる度に変数aの値を1増やしているため、1秒間におおよそ60増加していると思います。
メンバ変数をStartとUpdateの両方で使用する
StartとUpdateという2つのビルトインメソッドを学んだので、フィールド変数をこの2つで利用してみましょう。
using UnityEngine;
class Test : MonoBehaviour
{
    int a = 10;
    
    void Start()
    {
        a = 1000; // Startでもaを使う
    }
    void Update()
    {
        a++;
        Debug.Log(a);
    }
}
実行すれば、aの値が10からではなく1000から表示されるはずです。2つのメソッドで同じ変数aを使用できていることがわかります。
メンバ変数にpublicをつける

Unityでのメンバ変数の便利な使い方を紹介します。変数宣言でpublicキーワードを使用すれば、インスペクター上で変数の値を設定できるようになります。
using UnityEngine;
class Test : MonoBehaviour
{
    public int a = 0; // publicをつけるとインスペクターで値を変更できる
    void Update()
    {
        a++;
        Debug.Log(a);
    }
}
プログラムを書き直さずに値を変更できるため、キャラクターなどのパラメータ調整が楽になります。役に立つので覚えておくといいでしょう。
今回はインスペクターで値を変更できる機能を紹介しましたが、それ以外にも意味があります。難易度が上がるため、ここでは説明しませんが、ほかにも意味があるということだけ認識しておいてください。
まとめ
この記事では、メンバ変数について学びました。メンバ変数を使えば異なるメソッドで使用することができます。
Unityプログラミング講座一覧はこちら

