我发现了类似的问题,但我无法用提供的答案解决我的问题。
我有以下代码,它应该在数组中的颜色之间淡出。
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 行中删除产量以获得“return (FadeMaterialColorTo(m, colors[i%2],速度,类型));” 但后来我收到以下错误:
Cannot implicitly convert type `System.Collections.IEnumerator' to `bool'
这是一个类似的主题,但在 Unity 中,返回类型 IEnumerator> 不起作用
The non-generic type `System.Collections.IEnumerator' cannot be used with the type arguments