StartとAwakeの違い【メモ】
6月から7月前半に掛けてサボ体調が悪かったので結構忘れていることも多いこの頃
ふと「StartとAwakeの違いってなんだっけ?」となった。AwakeはStartより呼び出されるのが早いんだっけか…?そんなわけで忘れないようにメモ
Awake
こちらも公式マニュアルを見ると
この関数は常に Start 関数の前およびプレハブのインスタンス化直後に呼び出されます。(もしゲームオブジェクトがスタートアップ時に無効である場合、有効になるまで Awake は呼び出されません。
なんとこのAwake関数、スクリプトが非アクティブでも実行される。マジか
使い分けの注意点
Awakeのほうが先に呼ばれるんなら全部Awakeに書いていいのでは?と思わないこともないけど、場合によってはエラーとなることも
というのもAwake同士の順番はランダムなのでAwake内で他のスクリプトを参照するとNull参照となる可能性が出てくるため
Awakeでは初期化処理にとどめるのが良いみたいですね
まとめ
・AwakeはStartより先に呼び出される
・Null参照エラーの可能性もあるためAwake内の記述は気を付ける
ちなみにオブジェクトが有効となるときに呼び出されるOnEnableもある
(Awake → OnEnable → Start)