【Unity】LateUpdateとは?Updateよりも後でフレーム毎に呼ばれるメソッド

LateUpdateとは? Unity

こんにちは、ともくんのゲーム作り部屋にようこそ!

このページでは、

「LateUpdateメソッドってなに?」

「UpdateとLateUpdateってなにが違うの?」

というお悩みの方に向けた内容となっています。

Unityでは、スクリプト内でフレーム毎に処理を行うような場合に、Updateメソッドを使って実装することができます。

同じように、LateUpdateもフレーム毎に処理を行うことができるメソッドですが、Updateメソッドでの処理が全て行われた後に、LateUpdateメソッドの処理が行われるという特徴があります。

例えば、プレイヤーの移動処理がUpdateメソッド内で行われて、そのプレイヤーの位置に向けてカメラを追従させるような場合に、LateUpdateメソッドが使われることがあります。

そこで、このページでは、UnityのLateUpdateメソッドについて、どんな仕組みなのか、また使い方までをまとめていきます。

この記事を書いた人

ゲーム作りを学び始めた一児のパパです。
このブログは、子供から「ゲームを作ってみたい!」と言われ、非プログラマーでゲーム作りをしたことない僕が、ゲーム作りの本を読んで独学でゲーム開発を学んでいるブログです。
同じように初めてゲーム作りをしている方と一緒に学んでいけるようなブログに出来たらいいなと思っています。
また、「このコードはおかしい」とか「もっと良い書き方があるよ!」などあれば、どんどん指摘して頂けると助かります。

LateUpdateとは?

まずは、LateUpdateがどんなメソッドなのか紹介していきます。

全てのUpdateよりも後で呼ばれるメソッド

LateUpdateメソッドは、Updateメソッドよりも後に呼び出されて処理が行われるメソッドです。

もう少し詳しく説明すると、UpdateもLateUpdateもUnity側で定義されているメソッドで、フレーム毎に自動的に呼び出されて、中に書いた処理が実行されるようになっています。

同じようなメソッドですが、呼び出される順番が異なっていて、最初にフレーム内でUpdateメソッドが呼び出されて処理が行われた後に、LateUpdateメソッドが呼び出されることになります。

そして、このLateUpdateメソッドが呼び出されるのは、全てのスクリプトのUpdateメソッドの処理が行われた後になります。

例えば、複数のスクリプトの中にUpdateメソッドで処理を書いていた場合、それぞれの処理が行われる順番はランダムとなっています。

そこで、他のスクリプトのUpdateよりも必ず後に実行したい処理がある場合は、LateUpdateメソッド内に書いておくことで、全てのスクリプトのUpdateよりも後に処理を行うことができます。

カメラの処理などで使われることが多い

LateUpdateメソッドは、カメラ処理などを作る際に使われることが多いです。

例えば、プレイヤーの移動に合わせてカメラを追従させるという処理を作る場合、プレイヤーの移動処理が行われた後に、カメラの追従処理が行われるようにする必要があります。

そこで、プレイヤーの移動処理をUpdateメソッドに記述しておき、カメラの追従処理をLateUpdateメソッドに記述しておくことで、必ずカメラの追従処理が後に行われるようになります。

このようなカメラの処理以外にも、特定のオブジェクトの移動の後に実行させたいような処理を作る場合に、LateUpdateメソッドを活用していきます。

LateUpdateの使い方

ここからは、LateUpdateメソッドの使い方について紹介していきます。

MonoBehaviourクラスを継承する

LateUpdateメソッドを使うには、他のUpdateメソッドなどと同じように、MonoBehaviourクラスを継承することで使用できます。

継承とは、クラスで定義している変数やメソッドをそのクラスに引き継ぐことができる機能です。

MonoBehaviourクラスを継承させるには、以下のように行目でクラス名の横に「: MonoBehaviour」と記載することで継承できます。

using UnityEngine;

public class クラス名 : MonoBehaviour  // MonoBehaviourクラスを継承する
{
}

LateUpdate()で処理を書いていく

MonoBehaviourクラスを継承したら、スクリプト内でLateUpdateメソッドを使っていきます。

LateUpdateメソッドは、引数や返り値などは無いので、

using UnityEngine;

public class クラス名 : MonoBehaviour
{
    void LateUpdate()    // LateUpdateメソッドを作る
    {
        // LateUpdateメソッドの処理内容を書く
    }
}

5行目のようにvoid型を使って、実行したい処理内容を記述していきます。

これで、他のスクリプトのUpdateメソッドよりも後に、LateUpdateメソッドに書いた処理がフレーム毎に実行されることになります。

まとめ

このページでは、UnityのLateUpdateメソッドについて、どんなメソッドなのか、仕組みや使い方までをまとめていきましたが、いかがでしたでしょうか?

LateUpdateメソッドとは、全てのスクリプトのUpdateメソッドよりも後でフレーム毎に呼び出されるメソッドです。

例えば、Updateメソッド内でのプレイヤーの移動に合わせて、カメラを追従させる処理を行うような場合に、LateUpdateメソッドに書いておくことで、順序通りに実行されるようになります。

基本的な定期処理はUpdateメソッドで記述しつつ、移動や回転など他のオブジェクトの動きに合わせて実行させるような処理の場合は、LateUpdateメソッド内に書いておきましょう。

最後までお読みいただきまして、ありがとうございました!

コメント