Menu
CoddyTech

値を覚える変数

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ずつ増えていきます。

challenge icon

チャレンジ

簡単

植物が成長し続けるようにしましょう。

  1. Update()の中からint frames = 0;の行を切り取ります。
  2. クラス内の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プレイグラウンド