协程期间图像颜色未更新
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));
我正在尝试获取与协程的 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));