我正在通过Unity的太空射击课程,我已经到了小行星的位置,我可以摧毁它们。
当小行星检测到触发器碰撞时,它会触发" showExplosion"方法。问题是,在我们销毁游戏对象并实例化爆炸之后,爆炸仍然是一个对象。
这显然是一种不好的做法。
我需要做的(我认为)是等待该动画完成然后销毁该对象。
现在我假设有一个我可以听的事件......哪个也很好知道......
但我如何简单地说等待X秒然后销毁爆炸对象。
答案 0 :(得分:2)
通过使用Coroutines,你可以做这样的事情。
IEnumerator DestroyObjectAfterSeconds()
{
yield return new WaitForSeconds(timeInSeconds);
//DestroyObject here
}
在showExplosion方法调用中
StartCoroutine("DestroyObjectAfterSeconds");
如果您想等待动画完成然后销毁游戏对象,您可以将统一的事件添加到您的销毁动画中。为此,单击具有销毁动画的游戏对象,然后转到顶部窗口或按下命令+ 6并打开动画窗口,现在选择最后一帧动画,您可以将动画添加到动画的最后一帧。这样,您可以在动画完成时销毁游戏对象。 :)
答案 1 :(得分:1)
有几种方法可以做到这一点,但最简单的方法是使用 Destroy 中的第二个参数,这是销毁的时间。
例如Destroy(myGameObject,5F);
将在5秒后销毁游戏对象。
因此,在小行星脚本中,在您实例化爆炸的那一刻,请致电Destroy(explosionObject,10F);
(给予足够的时间让爆炸完成,如果再停留在场景中并不重要)
我认为它应该可以正常工作,如果没有,你可以在爆炸中使用一个独立的脚本,在Start()方法中调用Destroy(this.gameobject,10F)
如果你想等待,那么做更多的通用(不仅仅是Destroy)你可以使用Coroutines