UnityのスクリプトはGameObjectにアタッチすることで初めて有効化されます。それでは、ゲーム全体を管理するためのスクリプトはどこにどのようにして作成すればよいのでしょうか?
開発環境
- Unity 2019.4.1f1
ゲーム管理用のオブジェクトを用いる
自分で一からプログラムを組む場合は全体を管理するクラスを好きなように書けばよいのですが、Unityを用いて開発するのならUnityによるゲーム進行のシステムに組み込むようにゲーム管理用の処理も書かなくてはいけません。Unityにおけるゲーム進行で処理されるのはアクティブ化されたGameObjectのみなので、ゲーム全体を管理するスクリプトもGameObjectとして用意する必要があります。
ゲーム管理用のオブジェクトの作成
まずは、ゲーム全体を管理するための空(カラ)のGameObjectを作成し、これをゲーム全体を管理するマネージャーとして用いましょう。

続いて、新規のスクリプトを作成します。スクリプトの名前は作成するときに決めてしまいましょう。

作成されたスクリプトはMonoBehaviourを継承したクラスで、StartメソッドとUpdateメソッドがあらかじめ用意されています。スクリプトが有効化されたタイミングでまずStartメソッドが呼び出され、それ以降は各フレームごとにUpdateメソッドが呼び出されるので、ここにそれぞれの処理を記載していきます。なお、スクリプトのファイル名を変更する場合は、スクリプトのクラス名も必ず変更しましょう。

最後にこのスクリプトを、先ほど作成したGameObjectにアタッチすることで実行できるようになります。

これで、ゲーム全体の進行を管理するマネージャークラスができました。今後はこのManagerに処理を記述していきましょう。
マネージャークラスへのスクリプトの記述
ここで作成したマネージャークラスの動作も当然Unity全体のイベント管理システムに組み込まれています。Unityのイベント管理はメッセージシステムによって行われており、それに沿ってマネージャークラスにも処理を記述していきます。具体的には、マネージャークラスに次のメソッドを作成して、そこに処理を書いていきましょう。
Startメソッド
そのマネージャークラスがアクティブになったときに最初に呼び出されるメソッドです。ゲームを初期化する処理などを書きましょう。
なお、Startメソッドはスクリプトを新規作成した段階で最初から用意されています。
Updateメソッド
Unityの各フレームごとに呼び出されるメソッドです。ユーザーからの入力を受け付けるような処理などを書きましょう。
なお、Updateメソッドはスクリプトを新規作成した段階で最初から用意されています。
FixedUpdateメソッド
一定時間ごとに呼び出されるメソッドです。Updateメソッドは端末の描画速度によって呼び出される間隔が一定ではないのに対して、FixedUpdateメソッドは一定間隔で呼び出されるので、物理演算などの処理を書くのに適しています。
Updateメソッドとの使い分けについては以下の記事をご覧ください。

LateUpdateメソッド
Updateメソッドが呼ばれた後に実行されるメソッドです。(マネージャークラスではあまり必要ないかもしれません)
コメント