在没有布尔条件的Update()中调用一次

时间:2015-05-30 14:13:30

标签: c# c++ unity3d

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

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

Unity3D C#

bool _call = false;

void Update()
{
  if (!_call)
    {
      call = true;
      // statements
    }
}

AGK 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()函数的中间,让函数/语句在那里被调用一次。 / p>

2 个答案:

答案 0 :(得分:1)

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

2)你无法让程序转到Start(),它会在使用该脚本的屏幕的开头调用一次。

答案 1 :(得分:0)

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

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