【Unityスクリプト】Destroy覚書


GameObject.Destroy()がうまく動かない

まず引数にGameObjectが入っているか確認する。thisとか入れるとコンポーネント(スクリプト)が削除されてしまう。

思い通りに動いたり動かなかったりするときはタイミングの問題かもしれない。

Destroyは現在のフレーム終了後、次のフレーム開始前に実行される。

そのためDestroy直後に親オブジェクトから子オブジェクトを数える処理なんかを入れてもDestroy前の結果が返ってくる。これを回避するためにコルーチンを使う。

これはDestroy後の処理を1F遅らせているけど、Destroy自体を遅らせるときは第2引数に秒数を入れる。遅らせたDestroyのさらに後に処理を入れるならオブジェクトに OnDestroy() を定義してタイミングをはかる必要がある。

 


コメントを残す

メールアドレスが公開されることはありません。