Unity c#等等再做
本文关键字:Unity | 更新日期: 2023-09-27 18:05:55
我正在完成Unity的太空射击课程,我已经到了小行星向我飞来的地步,我可以摧毁它们。
当小行星检测到触发碰撞时,它会触发"showExplosion"方法。问题是,在我们销毁游戏对象并实例化爆炸之后,爆炸仍然是一个对象。
这显然是不好的做法。
我需要做的(我认为)是等待动画完成,然后销毁对象。
现在我假设有一个事件我可以监听…我也很想知道这一点。
但是我怎么简单地说等待X秒然后销毁爆炸对象呢
通过使用协程,您可以做这样的事情。
IEnumerator DestroyObjectAfterSeconds()
{
yield return new WaitForSeconds(timeInSeconds);
//DestroyObject here
}
中的showExplosion方法调用
StartCoroutine("DestroyObjectAfterSeconds");
如果你想等待动画完成,然后销毁游戏对象,你可以在unity中为你的销毁动画添加一个事件。为此,点击带有破坏动画的游戏对象,然后转到顶部栏的窗口或按下command + 6并打开动画窗口,现在选择最后一帧动画,您可以在动画的最后一帧中添加事件。这样你就可以在动画完成后销毁你的游戏对象。:)
有几种方法可以做到这一点,但最简单的方法是使用Destroy中的第二个参数,即time to Destroy
例如,Destroy(myGameObject,5F);
将在5秒后摧毁游戏对象。
所以,在小行星脚本中,在你实例化爆炸的那一刻,调用Destroy(explosionObject,10F);
(给爆炸足够的时间来完成,如果在场景中停留更长一点并不重要)
我认为它应该正常工作,如果不是,你可以使用一个独立的脚本在爆炸,调用Destroy(this.gameobject,10F)
在Start()方法
如果你想要一个等待,然后做更多的通用(不仅仅是Destroy),你可以使用协程