我有一个对象,需要一些时间才能开始执行。当它立即执行时,它之间没有时间。我有一个检测我何时发生碰撞的功能,现在我希望几秒钟后发生一些事情。如果立即发生,那么它将不会很顺利。
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "(your tag)")
{
//immediate reaction
}
}
与具有给定标签的对象发生冲突后,我可以立即做出反应,但是可能在几秒钟后或之后无法执行某些操作?如何为这样的实例设置计时器?
使用StartCoroutine()函数可以完成很多计时。然后将其发送到IEnumerator进行处理。假设您希望触发器在几秒钟后立即做出反应。这是我们的触发功能:
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "(your tag)")
{
StartCoroutine(name());
}
}
在IEnumerator中,我们等待WaitForSeconds()实例的秒数。等待尽可能多的秒,然后再将其发送回行动
IEnumerator name()
{
yield return new WaitForSeconds(4);
func();
}
与物体碰撞四秒钟后,我们称呼为回应。
void func()
{
//execute four seconds later
}
总的来说,看起来像:
NewBehaviorScript:learning()
{
void start()
{
//N/A
}
void Update()
{
//N/A
}
void OnTriggerEnter2D(Collider2D other)
{
if (other.tag == "(your tag)")
{
StartCoroutine(NAME());
}
}
IEnumerator NAME()
{
yield return new WaitForSeconds(4);
func();
}
void func()
{
//execute reaction
}
}