首页 > 解决方案 > c# unity 暂停一个 for 循环,直到 bool 返回 true

问题描述

我有一个 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();


}

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

我是朝着正确的方向前进还是应该以不同的方式解决这个问题?先感谢您

标签: c#visual-studiounity3d

解决方案


我不会在这里建议无限循环。我会选择这里yield return解释的 subrutine 方法

创建子程序

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

随时随地等待

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

当用户按下回车时,这将恢复。然后,您可以检查输入值并重新询问。


推荐阅读