Я выбираю данные из базы данных, а затем присваиваю эти данные значениям в массиве в проекте единства с использованием 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"]);
}
Side Примечание: если вы пытались создать [MCVE] вы могли бы найти проблему самостоятельно, или, по крайней мере, поставил вопрос более целенаправленным ('yield return' не имеет никакого отношения к демонстрационному коду проблемы). –