c# unity 暂停 for 循环直到 bool 返回 true

时间:2021-02-13 07:11:25

标签: c# visual-studio unity3d

我有一个 for 循环,它循环一个类数组,实例化一个新的播放器类并传入一个字符串(名称)。

public void createPlayers( int pInput)
{
    //holds name
    string temporaryString="defualt";
    players = new Player[pInput];
   

    for (int i = 0; i < pInput; ++i)
    {
       
        //PlayerTypesNameFunction()// this gets and returns a string to Temporary String
        //wait till function returns with true meaning player(i) has entered name

        players[i] = new Player(100,temporaryString);
        Debug.Log(players[i].m_sName);
    } 
        
    CurrentState = GameState.m_eQueueWeather;
    CallGameCurrentState();


}

我希望它调用一个函数,让玩家输入一个名字,只有在该函数完成时才继续循环。 将 bool 更改为 true(bool gotInfo),然后循环继续获取返回并存储在 temporaryString 中的字符串(上面已设置的字符串),并将其分配给此行 players[i] = new Player(100,temporaryString); 中的新玩家。

我是在朝着正确的方向前进,还是应该以不同的方式解决这个问题? 提前致谢

1 个答案:

答案 0 :(得分:0)

我不建议在这里使用无限循环。我会选择 here

解释的 yield return subrutine 方法

创建子程序

 IEnumerator WaitForKeyDown(KeyCode keyCode)
 {
     while (!Input.GetKeyDown(keyCode))
         yield return null;
 }

随时随地等待

 yield return StartCoroutine(WaitForKeyDown(KeyCode.Return));

这将在用户按下 Enter 键时恢复。然后您可以检查输入值并重新询问。