Я нашел похожие вопросы, но я не смог решить свою проблему с предоставленными ответами.Ошибка возврата возвращаемого значения IEnumerator
У меня есть следующий код, который должен исчезать между цветами в массиве.
public static IEnumerator FadeMaterialColors(Material m, Color[] colors, float speed, ProgressCurve type){
for (int i = 0; i < colors.Length; i++){
yield return (FadeMaterialColorTo(m, colors[i%2], speed, type));
}
yield return null;
}
public static IEnumerator FadeMaterialColorTo(Material m, Color target, float duration, ProgressCurve type){
Color start = m.color;
float y, t = Time.time;
float progress = (Time.time - t)/duration;
while (progress < 1f){
y = GetProgressCurve(progress, type);
m.color = start + y*(target - start);
yield return null; // return here next frame
progress = (Time.time - t)/duration;
}
m.color = target;
}
Функция «FadeMaterialColorTo» сама по себе работает нормально, но я не вижу результатов при вызове его с верхней функцией ... Я попытался уронить выход в строке 3, чтобы получить "возврата (FadeMaterialColorTo (м, цвета [i% 2], скорость, тип)); но затем я получаю следующее сообщение об ошибке:
Cannot implicitly convert type `System.Collections.IEnumerator' to `bool'
Here аналогичная тема, но в единстве типа возвращения IEnumerator> не работает
The non-generic type `System.Collections.IEnumerator' cannot be used with the type arguments
Спасибо, что сделал трюк. StartCoroutine не может быть вызван из статического метода. Я нашел обходное решение [здесь] (http://forum.unity3d.com/attachment.php?attachmentid=46803&d=1363320165), которое было взято из [здесь] (http://forum.unity3d.com/threads/15524- Static-StartCoroutine) – user2572309