値を覚える変数
CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 5/85。
Unityは毎フレームUpdate()を呼び出します。呼び出しごとに状態はリセットされます。メソッド内で作られた変数は、メソッドが終わると破棄されるためです。そのため、このカウンターは1を超えません。
void Update()
{
int frames = 0;
frames++;
}frames++は1を加算します。frames += 1を短く書く方法です。しかし次のフレームでは、再びint frames = 0;が実行され、最初からやり直します。
あるフレームから次のフレームへ値を保持するには、クラス内で、どのメソッドの外にも変数を作ります。そこにある変数はフィールドです。オブジェクトが存在する限り保持され、クラス内のどのメソッドからも使えます。
int frames = 0;
void Update()
{
frames++;
}これでframesは数え続けます。1、2、3と続き、毎フレーム1ずつ増えていきます。
チャレンジ
簡単植物が成長し続けるようにしましょう。
Update()の中からint frames = 0;の行を切り取ります。- クラス内の
void Update()より上に貼り付け、framesがカウントを記憶するフィールドになるようにします。
「プレイ」を押すと、植物はフレームごとに少しずつ高くなります。その後、「確認」を押します。
自分で試してみよう
using UnityEngine;
public class Grower : MonoBehaviour
{
void Update()
{
int frames = 0;
frames++;
transform.localScale = new Vector3(1, 1 + frames * 0.01f, 1);
}
}
Unityスクリプトの基礎のすべてのレッスン
自分で練習してみよう: Unityプレイグラウンド