オブジェクトを増やすことはできたが、減らすことができない。
KillMe()と書いたら、そのオブジェクトが消えるようにしよう。
オブジェクトを消すときは、親の「子供リスト」からも消さなければならない。
例えば「プレイシーン」は「プレイヤー」「弾1」「弾2」「弾3」などの子供を持っていて、それはリストになっている。
この状況で突然「弾2」が消えてしまうと、当たり判定や描画をするときにオブジェクトが見つからず、エラーになってしまう。
したがって、オブジェクトは「そのオブジェクトの親」が消すことになる。
消す処理はどこかのUpdate関数(または、そこから呼び出される関数)の中に書くことになると思うが、中途半端なタイミングで消すことはできない。
ループ処理の途中でオブジェクトの数が変わったりすると、正しく処理されない場合がある。
したがって、消すタイミングはUpdat関数外でなければならない。
ということで、こうする。
GameObjectクラスにフラグを用意し、KillMe関数が呼ばれたらそのフラグをtrueにする。
UpdateSub関数で、すべての子供のUpdateを呼んだ後に上記フラグがtrueになってる子を探し、見つけ次第消す。
消す場合は次の手順
消したい子のReleaseSub関数を呼ぶ(孫たちが全部消える)
そのオブジェクトをdeleteする
子供たちリストから削除する