説明

Start はスクリプトが有効で、Update メソッドが最初に呼び出される前のフレームで呼び出されます

Awake 関数と同様に、Start 関数はスクリプトの生存期間中に一回のみ呼び出されます。しかし Awake はスクリプトが有効化されているかどうかに関わらず、スクリプトオブジェクトが初期化されるときに呼び出されます。もし初期化のタイミングでスクリプトが有効化されてない場合、Start は Awake と同じフレームで呼び出されない場合があります。

Awake 関数はどのオブジェクトの Start 関数が呼び出されるよりも前に、シーン上のすべてのオブジェクトで呼び出されます。これはオブジェクト A の初期化コードがオブジェクト B の初期化コードが実行されていることに依存する必要がある場合に便利です。B の初期化コードは Awake で行い、A の初期化コードは Start で行なうべきです。

オブジェクトがゲームプレイの最中にインスタンス化された場合、必然的に Awake 関数はシーンオブジェクトの Start 関数が完了した後に呼び出されます。

using UnityEngine;
using System.Collections;

// The ExampleClass starts with Awake. The GameObject class has activeSelf // set to false. When activeSelf is set to true the Start() and Update() // functions will be called causing the ExampleClass to run. // Note that ExampleClass (Script) in the Inspector is turned off. It // needs to be ticked to make script call Start.

public class ExampleClass : MonoBehaviour { private float update;

void Awake() { Debug.Log("Awake"); update = 0.0f; }

IEnumerator Start() { Debug.Log("Start1"); yield return new WaitForSeconds(2.5f); Debug.Log("Start2"); }

void Update() { update += Time.deltaTime; if (update > 1.0f) { update = 0.0f; Debug.Log("Update"); } } }