17/12/14 23:45:13.38 On7lkIBu.net
>>618
原因わかった今ならすっきりだが検証中は原因究明に本当に苦戦したよ
簡単にまとめると次のような処理
void func(){
①
for(~){
Destoryでステージ上の全落ちてるアイテムを一旦削除
}
②
for(~){
Instantiateで新しいアイテムをフィールドにばら撒く
}
③
for(~){
新しくばら撒いたアイテムの中にあるスクリプトをGameObject.Findで呼び出しながら
アイテムを初期化していく
}
}
この処理がうまく機能していなかった。
原因は
・①のDestoryはvoid func(){}が終了しないと実際にゲームオブジェクトは削除されていない。
・②のInstantiateも①と同じくこの時点で完了していないようだった
・結果③での検索は②で生成されたものではなく①で削除予定だったものが参照されていた
これで新しいアイテムは全部正しく初期化されてなかった。
ゲームオブジェクト名でアイテムを識別して
GameObject.Findの検索に使ってるという不幸も重なってのバグ