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

C# 每隔几秒钟在两个函数的执行之间切换,c#,function,unity3d,game-development,C#,Function,Unity3d,Game Development,我用的是Unity和C。我的游戏无限期运行,除非玩家被摧毁 我怎样才能每隔几秒钟在两个函数的执行之间切换,因为现在我使用的是if语句,但我不能这样做,因为游戏永远运行,这需要无限多的条件 我想在几秒钟后交替执行这两个if语句下的代码 那么,我怎样才能做到这一点呢 private void Update () { timeelapsed += Time.deltaTime; Debug.Log(timeelapsed); if (timeelapsed >= 20

我用的是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);
    }
}
private void更新()
{
timeappeased+=Time.deltaTime;
Debug.Log(经过的时间);

如果(timeappeased>=20f&&timeappeased 40f&&timeappeased只需重置
timeappeased
变量:

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;
    }
}

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

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

你能展示那些if语句吗?将它们编辑到你的问题中刚刚添加了if语句我希望第二组语句也执行一段时间,我不想立即切换到第1组重新编辑。请检查。我会将
if>=40,timeappeased=0
更改为
if>=40,timeappeased-=40
以避免微时间加载项在很长的一段时间内(你的时间永远不会精确到40岁,你每次修剪的任何数量都会累加起来)。这可能对询问者不重要,但对其他人可能重要。
WaitForSeconds waiter = new WaitForSeconds(20);
IEnumerator Start()
{
  while(true)
  {
   DoOneThing();
   yield return waiter;
   DoAnotherThing();
   yield return waiter;
 }
}