皆さんはUnity の初期化と更新について何で色々な種類あるのか迷ったことないでしょうか?
自分は結構分からないときがあって、今回Unity Answersに良くまとまった内容見つけたので翻訳してみました:
http://answers.unity3d.com/questions/10189/what-is-the-general-use-of-awake-start-update-fixe.html
Jan,15 2010
質問
初期化に際して:
Awake()
Start()
なんで二つの初期化メソッドがあるの?
違いは何?
ベストプラクティス事例は?
更新に際して:
Update()
FixedUpdate()
LateUpdate()
なんで3つも更新メソッドがあるの?
違いは何?
しつこいけど、ベストプラクティス事例は?
回答
スクリプティング リファレンスが良くかけていて内容をカバーしているので、説明へのリンクをつけるね。
Awake
Start
ドキュメントからの引用:
Awake および Start の違いは:
Start はスクリプトが有効化されたときしかコールされないことです。これにより初期化コードの実行を本当に必要なタイミングになるまで意図的に遅らせることが出来ます。
Awake は常に Start より前にコールされます。これによりスクリプトの初期化の順番を制御出来ます。
Update
LateUpdate
FixedUpdate
LateUpdate は Update の後にコールされる関数です。
これによりスクリプト実行の順番を制御出来ます。例えばカメラの追跡は、Updateにより移動されたオブジェクトもトラッキング出来るようにするため、常に LateUpdate で実装されるべきです。
LateUpdate はアニメーション適用の後にコールされることに留意して下さい。すなわちアニメーションシステムによりサンプリングした後のポーズに対するプロシージャルなアニメーションを LateUpdate であれば実装出来ます。
FixedUpdate は 該当のMonoBehaviour スクリプトが有効化されていれば 固定フレームレートの間隔でコールされます。Rigidbody を扱う時は Update の代わりに FixedUpdate を使用すべきです。例えば Rigidbody に force を加える時は、Update の代わりに FixedUpdate の中で毎フレームごとに適用すべきです。
役立ててもらえるといいな!スクリプティング リファレンスの MonoBehaviour の も良い説明だよ!
-----------
他にも良い情報書かれてるサイトありますが、古い情報ながらこれが最もシンプルにまとまってる気がしますね!
0 件のコメント:
コメントを投稿