SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

全般 初期化や再生開始はStart() と Awake() どちらでやるべきですか? #98

Open SpriteStudio opened 9 years ago

SpriteStudio commented 9 years ago

Start() で行うようにしてください。

Awake関数では、その「Awake関数が含まれているコンポーネント(非GameObject)以外の動作・初期化終了は保証されていない(Unityの仕様上)」のため、このコード単体を実行した場合、動作が不定になる可能性があります。

Unityのマニュアルによれば、Awake関数では「そのAwake関数自身を含んだMonoBehaviourの継承クラス以外のコンポーネントやオブジェクトを操作してはならない」という仕様があります。 ※最新の動作仕様についてはUnity の公式マニュアルを参考にしてください。

MasamiYitsuse commented 9 years ago

上記に付記となります。

アプリケーション側のスクリプトで直接Prefab内のデータをインスタンス化せずに、制御用スクリプトを使用している場合、念のためアニメーションの初期処理・再生開始などの処理で不都合が生じた(例えば、Start関数の中で、実体化されたScript_SpriteStudio_PartsRootクラスの取得等に失敗するような)場合については、 https://github.com/SpriteStudio/SS5PlayerForUnity/wiki#Control-Animation にある例記などに基づいて、Update関数の中で行うようにしてください。 ※これらは、アプリケーションの設定でのスクリプトの実行順序などに依存します。