协程期间图像颜色未更新

Image color not updating during 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 循环结束才更新。

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

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

使用 Color 结构:

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

使用 Color32 结构:

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