1. ホーム 
  2. 備忘録 
  3. Unity

Awake,Start関数

Awake()とStart()

Awake はオブジェクトがインスタンス化された際に一回だけ呼ばれる処理である

ただしオブジェクトが有効化(アクティブ)である必要があり、無効である場合は有効化されるタイミングまで呼び出されない点に注意する

Awake はスクリプトオブジェクトの有効/無効は呼び出しに影響しない


一方 Start は Awake の後に呼ばれる関数となっており、Awake と同じくスクリプトの生存期間中に一回だけ呼び出される関数である

オブジェクト自身の有効/無効やスクリプトオブジェクトの有効/無効の影響を受ける


基本的にはAwakeやStartの実行順番は不規則であり、呼び出し順が影響して不具合が起きるような処理は書いてはいけない

※例外として Script Execution Order を設定することで呼び出し順を設定できるが、そのような処理を組まないことがベター


public class GameManager : MonoBehaviour
{
  /// <summary>
  /// 起動処理
  /// </summary>
  void Awake()
  {
    // 基本的に自クラス内の初期化などがよい
  }

  /// <summary>
  /// 開始前処理
  /// </summary>
  void Start()
  {
    // 他クラスへのアクセスはこちらにすると、Awake→Startの流れは担保されているので安心できる
  }
}