【Unity】InstantiateとCoroutine
Coroutine(コルーチン)の使い方が分かってきた今日この頃。
何でもCoroutineにする意味がないと言われ、使いまくっていた無駄なCoroutine部分を無くしつつデバッグしていると、オブジェクトの位置がおかしい・・・・。
原因を探ってみると
foreach内でInstantiate()したものをSetParent()でオブジェクトの子にした後、
そのtransform.positionを取得していた処理の
\どこかがおかしいみたい!/
以前はyield return StartCoroutine();でこの処理を行っており、
Coroutine処理をやめてから起こった不具合でした。
ソース内でCoroutineを使うと、関係ないはずの部分も並列処理されるのか?などと
考えた時もありましたが、そんなことはなく(あったら困る)。
原因はInstantiate()の重さでした。
Debug.Log() や Instantiate() などの速度を計測してみる - Qiita
Instantiate()が完了されないまま取得して変な数値になってたんですね・・・・。
★結論
Instantiate()を複数使用し、その後すぐに複製したオブジェクトのパラメータを
取得変更する時は、コルーチンで作り終わるまで待とうね!