サイレンスブログ

Unity初心者の備忘録をかねた自分のやってきたもの

【Unity】InstantiateとCoroutine

Coroutine(コルーチン)の使い方が分かってきた今日この頃。

何でもCoroutineにする意味がないと言われ、使いまくっていた無駄なCoroutine部分を無くしつつデバッグしていると、オブジェクトの位置がおかしい・・・・。

 

原因を探ってみると

foreach内でInstantiate()したものをSetParent()でオブジェクトの子にした後、

そのtransform.positionを取得していた処理の

\どこかがおかしいみたい!/

 

以前はyield return StartCoroutine();でこの処理を行っており、

Coroutine処理をやめてから起こった不具合でした。

ソース内でCoroutineを使うと、関係ないはずの部分も並列処理されるのか?などと

考えた時もありましたが、そんなことはなく(あったら困る)。

 

原因はInstantiate()の重さでした。

Debug.Log() や Instantiate() などの速度を計測してみる - Qiita

 

Instantiate()が完了されないまま取得して変な数値になってたんですね・・・・。

 

★結論

Instantiate()を複数使用し、その後すぐに複製したオブジェクトのパラメータを

取得変更する時は、コルーチンで作り終わるまで待とうね!