デバスバスター

わたすのメモ帳を盗み見るあなた的なスタンス

GameObjectをDestroyしたら可能であればDetachChildrenすべし

UnityでGameObjectをDestroyすると即時に消されるわけではなく、Destroyを実行したフレームでは残っている。 単にGameObjectを消すだけならさほど問題ないが、 例えばNGUIのUITableで子オブジェクトを整列させているような時、消したはずの子GameObjectがくっついていてReposition()しても思うように整列されない、といったことが起こる。

そんな時、親のGameObjectで子を削除するのと同時にtransform.DetachChildrenしてあげると即親子関係が解かれるので新たに子を生成してReposition()すると想定通り動作する。

ただしDetachChildrenしてしまうと全ての子との関係が解かれてしまうので注意。