Unity C#等待然后

时间:2015-08-01 11:10:12

标签: c# animation unity3d

我正在通过Unity的太空射击课程,我已经到了小行星的位置,我可以摧毁它们。

当小行星检测到触发器碰撞时,它会触发" showExplosion"方法。问题是,在我们销毁游戏对象并实例化爆炸之后,爆炸仍然是一个对象。

这显然是一种不好的做法。

我需要做的(我认为)是等待该动画完成然后销毁该对象。

现在我假设有一个我可以听的事件......哪个也很好知道......

但我如何简单地说等待X秒然后销毁爆炸对象。

2 个答案:

答案 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