在不带布尔条件的Update()中调用一次

Call once in Update() without boolean condition

本文关键字:调用 一次 Update 布尔 条件      更新时间:2023-10-16

这个问题与Unity3D c#以及AppGameKit c++有关。

是否建议使用布尔条件调用函数/语句一次,如下面的例子所示?

Unity3D c#

bool _call = false;
void Update()
{
  if (!_call)
    {
      call = true;
      // statements
    }
}
c++首先分析

bool _call = false;
void app::Loop(void)
{
  if (!_call)
    {
      _call = true;
      // statements
    }
}

我问这个问题是因为以下原因:

  1. 我在Unity和AGK论坛上都读到,在更新每帧的Update()函数中使用if-else/switch条件应该尽可能少。

  2. 我很好奇是否有任何其他方式可以让语句/函数在Update()函数中被调用时只调用一次。如果没有,我可以让程序回到Start()/Begin()部分,而在Update()/Loop()函数中间有函数/语句在那里调用,一次。

1)每帧都有一个布尔条件不会对性能产生太大的影响。也就是说,将逻辑保持在最低限度是一个很好的实践,所以做这样的事情需要在设计方面有一个很好的理由。

2)脚本的执行可以重新启动。看看这个链接:OnEnable, Awake, Start order还有这个链接:Behaviour.enabled

1)我在我的游戏中使用这个,我没有问题,所以我不明白为什么这不能在你的游戏

2)你不能使程序进入Start(),它在使用该脚本的屏幕开始时被调用一次。