前回の記事では、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プログラミング講座一覧はこちら