BZ易风

导航

 

原文链接:https://blog.csdn.net/NCZ9_/article/details/84203714

参考链接:https://blog.csdn.net/lee514/article/details/80995048

方法一:GameObject.Destroy(游戏物体(gameObject类型));

GameObject.Destroy(gameObject,2.0f);

Destory是静态方法,用类名加点的形式调用

方法中有两个参数

gameObject表示要销毁的游戏对象自身

2.0f表示2秒后销毁,可以任意指定时间

也可以用随机数函数生成随机的销毁时间,例如:Random.Range(1.0f,5.0f),表示1到5秒之间的秒数销毁游戏对象。

方法二:GameObject.DestroyImmediate(游戏物体(gameObject类型));

方法三:GameObject.DestroyObject(游戏物体(gameObject类型));

方法在脚本继承MonoBehaviour时可直接使用,无需通过GameObject调用。

  • DestroyImmediate立即销毁目标,并将目标置为null,且将目标的所有上层引用置空。
  • Destroy则在本帧结束前,渲染之前销毁目标和上层引用。不会立即销毁,Destroy调用后,目标数据仍然存在,不为null,上层引用也正常。注意:在同一帧,会出现前面代码已经用Destroy销毁了某物体,但后面仍然能够获取到的情况。就是因为Destroy在下一帧才会完成销毁操作。如果立即销毁,则使用DestroyImmediate。
  • 推荐使用Destroy代替DestroyImmediate,原因是DestroyImmediate是立即销毁,立即释放资源,做这个操作的时候,会消耗很多时间,影响主线程运行。Destroy是异步销毁,一般在下一帧销毁,不会影响主线程的运行



posted on 2021-05-31 09:09  BZ易风  阅读(1019)  评论(0编辑  收藏  举报