2013年4月2日火曜日

Unityでの初期化、更新Tips(Awake, LateUpdate)



皆さんは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 件のコメント:

コメントを投稿

ブックマークに追加

このエントリーをはてなブックマークに追加

自己紹介

自分の写真
Unity3D公式マニュアル翻訳やってる人がスマホ(iPhone, Android)のゲーム開発しています。気軽に面白く初心者が遊べる内容がモットー。Blogでは開発情報をひたすら、Twitterではゲーム作成の過程で参考にしている情報を中心につぶやきます

ページビューの合計

過去7日間の人気投稿