每隔几秒钟在两个函数的执行之间切换一次



我使用的是Unity和C#。除非玩家被摧毁,否则我的游戏将无限期运行。

我怎么能每隔几秒钟在两个函数的执行之间切换,因为现在我使用if语句,但我不能这样做,因为游戏永远运行,这需要无限多的条件。

我想在几秒钟后交替执行这两个if语句下的代码。

那么,我该如何做到这一点呢?

private void Update () 
{
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed >= 20f && timeelapsed <= 40f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
if (timeelapsed > 40f && timeelapsed <= 60f)
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}
}

只需重置timeelapsed变量:

void Update () {
timeelapsed += Time.deltaTime;
Debug.Log(timeelapsed);
if (timeelapsed < 20f)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
if (timeelapsed >= 40f) timeelapsed = 0f;
}
}

如果你不想改变timeelapsed的值,你可以这样做:

int quotient = (int)timeelapsed / 20;
if (quotient % 2 == 0)
{
LinearSpawnerLeft.SetActive(false);
CurveSpawnerLeft.SetActive(true);
}
else
{
CurveSpawnerLeft.SetActive(false);
LinearSpawnerLeft.SetActive(true);
}

最优雅的方法是使用内置的Coroutine机制

WaitForSeconds waiter = new WaitForSeconds(20);
IEnumerator Start()
{
while(true)
{
DoOneThing();
yield return waiter;
DoAnotherThing();
yield return waiter;
}
}

相关内容

  • 没有找到相关文章

最新更新