如何在 Update 中处理方法而不等待它并且在它工作时不重新处理它

How to process a method inside Update without waiting for it and without reprocessing it while its working

我有一个 AI 生物,我想跳向落在其半径内的敌人。 radius 会在每次更新时检测到它们,这很好,但我应该如何处理跳跃?

跳转目前也存在于更新中,但是应该如何处理 AI 需要跳转并在跳转发生时继续其他处理而不是在已经跳转的情况下尝试跳转的状态。

处理此问题的最佳方法是什么?活动和代表?统一事件?多线程?锁定?异步? 更新甚至允许其中的一些,它被称为每一帧但它是异步的吗?

一种快速而肮脏的方法是降低半径检查的轮询率,这样跳跃就可以在下一次半径检查发生之前轻松完成。

关于最好的方法,我不确定。

虽然很多人讨厌协程 atm。暂时忽略它。

有一个协程来进行检测和跳转,等待跳转完成。这样你的 fps 保持良好并且计算不会影响它。

phone

上的伪代码
IEnumerator findme()
{
  while(true)
  { 
    // find victim
    //if victimfound
      // trigger jump
      // what till animation is not playing any more
   }
}

我还建议在 while 循环结束时等待,因为你几乎肯定不需要它,比如每秒 200 倍,所以如果没有跳转,可能需要像 0.25s 这样的短暂等待