【Unity/C#】Update()(毎フレーム更新)の基本と仕組み

コードの型

ゲームの画面が描き変わるたび(通常1秒間に60回など)に、繰り返し自動実行されます。

C#

void Update()
{
    // 毎フレーム(非常に短い間隔で)実行したい処理を書く
    // 例:プレイヤーの移動や、キー入力のチェック
    
    if (Input.GetKey(KeyCode.RightArrow))
    {
        transform.Translate(0.1f, 0, 0); // 毎フレーム右に動かす
    }
}

コードの仕組み

Update() は、Unityが「ゲーム画面を描画する直前」に必ず呼び出してくれる魔法のメソッドです。

  • 毎フレーム実行: ゲームの動き(アニメーションや物理演算)は、パラパラ漫画のように静止画を高速で切り替えて作られています。その「切り替わりの瞬間」ごとに Update() が呼ばれることで、キャラクターを滑らかに動かしたり、スコアを更新したりできます。

活用例(入力の監視や変化の計算)

「今、キーが押されたか?」「タイマーはあと何秒か?」といった、刻一刻と変わる状況をチェックするのに最適です。

C#

void Update()
{
    // 1. キー入力をチェック(押されている間ずっと反応する)
    if (Input.GetMouseButtonDown(0)) 
    {
        Debug.Log("クリックされた!");
    }

    // 2. タイマーのカウントダウン
    timeRemaining -= Time.deltaTime;
}

その他(Update() に関する重要ポイント)

  • Time.deltaTime(タイムデルタタイム):
    • Update() はPCの性能によって呼ばれる回数が変わります(速いPCは1秒に100回、遅いPCは30回など)。
    • そのまま数値を足すとPCによってゲームの速度が変わってしまうため、* Time.deltaTime を掛けることで「PCの性能に関わらず、1秒間に同じだけ進む」ように調整するのが鉄則です。
  • 重い処理を避ける:
    • Update() は非常に短い時間で何度も呼ばれます。ここで「重い計算」や「他のオブジェクトの検索(GameObject.Findなど)」を行うと、ゲームがカクついてしまいます。重い処理は Start() や別のタイミングに任せましょう。

まとめ:Start() と Update() の比較

メソッド実行タイミング主な役割
Start()最初だけ変数の初期化、設定の準備
Update()ずっと毎フレーム動きの計算、入力監視、状態の更新

コメント

タイトルとURLをコピーしました