2016-01-07 3 views
0

Я выбираю данные из базы данных, а затем присваиваю эти данные значениям в массиве в проекте единства с использованием C#. Доступ к базе данных осуществляется с помощью php-скриптов, и моя игра вызывает сценарии на сервере. Мой план состоит в том, чтобы увеличить номер корабля и использовать тот же скрипт, который вызывается на другом корабле в базе данных. Все это хорошо работает, за исключением моего цикла в C#, который выполняется только один раз. Вот мой код. shipsAllowed настроен на 2 прямо сейчас для целей тестирования, и в базе данных есть запись для этого корабля. Так что я делаю неправильно, кажется прямым, но не работает для меня. Спасибо за любую помощь.«for» loop with IEnumerator coroutine, содержащий yied return not looping

public void AddShipsToShipsArray() 
{ 
    for (int x = 1; x < ShipsAllowed; x++) 
    { 
     StartCoroutine(GetShipInfoFromDB(x)); 
    } 
} 

IEnumerator GetShipInfoFromDB(int x) 
{ 

    shipInfoUrl = "http://localhost/fishwar/GetShipInfo.php?shipnum=" + x + "&id=" + accountNumber; 
    WWW shipInfoWWW = new WWW(shipInfoUrl); 
    yield return shipInfoWWW; 
    shipinfoRawString = shipInfoWWW.text; 

    Dictionary<string, object> shipInfo = MiniJSON.Json.Deserialize(shipinfoRawString) as Dictionary<string, object>; 

    shipArrayPosition = int.Parse((string)shipInfo["array_position"]); 
    ships[shipArrayPosition].shipName = (string)shipInfo["ship_name"]; 
    ships[shipArrayPosition].departureTime = DateTime.Parse((string)shipInfo["departure_time"]); 
    ships[shipArrayPosition].isAtSea = bool.Parse((string)shipInfo["is_at_sea"]); 
} 
+0

Side Примечание: если вы пытались создать [MCVE] вы могли бы найти проблему самостоятельно, или, по крайней мере, поставил вопрос более целенаправленным ('yield return' не имеет никакого отношения к демонстрационному коду проблемы). –

ответ

4

Изменить условие выхода в цикле использовать менее чем или равной к:

for (int x = 1; x <= ShipsAllowed; x++) // Change made on this line. 
{ 
    StartCoroutine(GetShipInfoFromDB(x)); 
}