在协程

时间:2017-05-21 10:44:37

标签: c# unity3d coroutine

我正在尝试获得类似于Unity文档中为协同程序提供的示例。在示例中,当我们更新其alpha值时,图像正在减慢淡入淡出:

IEnumerator Fade() {
    for (float f = 1f; f >= 0; f -= 0.1f) {
        Color c = renderer.material.color;
        c.a = f;
        renderer.material.color = c;
        yield return null;
    }
}

这是我的代码,QTE_Image是Image组件。

while (!QTE_Finished) {
    Color temp_Color = QTE_Image.color;
    temp_Color.a = (255/(QTE_MultiplierMax - QTE_MultiplierMin))*QTE_Multiplier - (255/((QTE_MultiplierMax/QTE_MultiplierMin)-1));
    Debug.Log (temp_Color.a); 
    QTE_Image.color = temp_Color;
    yield return null;
}

如您所见,我正在使用公式计算下一个alpha值(公式正在运行,Debug.Log (temp_Color.a)正在返回预期值)。但是,直到while循环结束时才会更新图像。

1 个答案:

答案 0 :(得分:0)

问题在于Color结构使用从0到1的十进制颜色值,而您的公式返回从0到255的alpha值。

从公式中删除255*,或使用Color32结构(使用0到255之间的整数范围)。

使用Color struct:

temp_Color.a = (QTE_Multiplier - QTE_MultiplierMin) / (QTE_MultiplierMax - QTE_MultiplierMin);

使用Color32 struct:

temp_Color.a = (int) (255 * (QTE_Multiplier - QTE_MultiplierMin) / (QTE_MultiplierMax - QTE_MultiplierMin));