Помогите, пожалуйста, разобраться с кусочком кода:
Синтаксис:
Используется csharp
IEnumerator UnitsSpavner()
{
while (unitsToSpawn.Count > 0)
{
int randomUnit = Random.Range(0, unitsToSpawn.Count);
int unitID = unitsToSpawn[randomUnit];
unitsToSpawn.Remove(unitsToSpawn[randomUnit]);
GameObject unit = Instantiate(unitPref, points[0].transform.position, Quaternion.identity);
unit.GetComponent<Unit>().SetValues(unitID);
units.Add(unit);
yield return new WaitForSeconds(unitInterval);
}
}
{
while (unitsToSpawn.Count > 0)
{
int randomUnit = Random.Range(0, unitsToSpawn.Count);
int unitID = unitsToSpawn[randomUnit];
unitsToSpawn.Remove(unitsToSpawn[randomUnit]);
GameObject unit = Instantiate(unitPref, points[0].transform.position, Quaternion.identity);
unit.GetComponent<Unit>().SetValues(unitID);
units.Add(unit);
yield return new WaitForSeconds(unitInterval);
}
}
Это спавнер юнитов в моем учебном проекте tower defense.
Один человек был весьма любезен и не поленился сообщить мне, что это плохое решение, поскольку "вызывать GetComponent в корутинах нельзя". К сожалению, он не объяснил, почему именно этого делать нельзя и как делать надо.
Я понимаю, что GetComponent - это тяжелый метод. Я думала, что поскольку я вызываю его не каждый кадр, а один раз в секунду (это значение переменной unitInterval), то так можно. Очевидно, у меня еще мало опыта и я чего-то не понимаю. (
Буду очень признательна тем, кто объяснит мне, как это сделать лучше.