Fading TextMeshPro Alpha 瞬间褪色
Fading TextMeshPro Alpha is instantly fading
我试过使用 LeanTween,现在我自己写了协程,但都不起作用。目标是让 TextMeshPro 元素的文本在一段时间内淡入/淡出,这应该足够简单但显然不是。这是协程:
private IEnumerator FadeText(float target, float duration) {
Color color = text.color;
float timer = 0f;
float alpha = color.a;
while(timer < duration) {
timer += Time.deltaTime;
print($"{timer / duration}% is: {Mathf.Lerp(alpha, target, timer / duration)}");
color.a = Mathf.Lerp(alpha, target, timer / duration);
text.color = color;
yield return new WaitForEndOfFrame();
}
}
Debug.Log 显示正确的值(在所需的持续时间内从 0 到 255,反之亦然)但文本只是弹出。上面的代码是这样的(再次:使用 LeanTween同样的结果):
Example
文本“升级”应该在 5 秒内淡出,并在 0.4 秒内淡出。
我是不是漏掉了什么?
事实证明,Color 在内部使用 0 到 1 之间的值,而不是我一直认为的 0 到 255 之间的值。将上面的代码与 0 和 1 一起使用可以正常工作。 LeanTween 版本也是如此。
Each color component is a floating point value with a range from 0 to 1.
原始颜色类型为 Color32
而
Each color component is a byte value with a range from 0 to 255.
所以要么
使用 Color32
(Color
和 Color32
之间存在隐式转换,因此您基本上可以互换使用它们,请参阅 Color32.Color
and Color32.Color32
)
或简单地将输入值更改为 0
和 1
之间的 float
。
private float timeElapsed;
private float valueToLerp;
private float delayTime = 5f;
Update()
{
if ( FadeOut)
{
valueToLerp = Mathf.Lerp(1, 0, timeElapsed / delayTime);
timeElapsed += Time.deltaTime;
textMesh.color = new Color(textMesh.color.r, textMesh.color.g,textMesh.color.b, valueToLerp);
}
}
我试过使用 LeanTween,现在我自己写了协程,但都不起作用。目标是让 TextMeshPro 元素的文本在一段时间内淡入/淡出,这应该足够简单但显然不是。这是协程:
private IEnumerator FadeText(float target, float duration) {
Color color = text.color;
float timer = 0f;
float alpha = color.a;
while(timer < duration) {
timer += Time.deltaTime;
print($"{timer / duration}% is: {Mathf.Lerp(alpha, target, timer / duration)}");
color.a = Mathf.Lerp(alpha, target, timer / duration);
text.color = color;
yield return new WaitForEndOfFrame();
}
}
Debug.Log 显示正确的值(在所需的持续时间内从 0 到 255,反之亦然)但文本只是弹出。上面的代码是这样的(再次:使用 LeanTween同样的结果): Example
文本“升级”应该在 5 秒内淡出,并在 0.4 秒内淡出。
我是不是漏掉了什么?
事实证明,Color 在内部使用 0 到 1 之间的值,而不是我一直认为的 0 到 255 之间的值。将上面的代码与 0 和 1 一起使用可以正常工作。 LeanTween 版本也是如此。
Each color component is a floating point value with a range from 0 to 1.
原始颜色类型为 Color32
而
Each color component is a byte value with a range from 0 to 255.
所以要么
使用
Color32
(Color
和Color32
之间存在隐式转换,因此您基本上可以互换使用它们,请参阅Color32.Color
andColor32.Color32
)或简单地将输入值更改为
0
和1
之间的float
。
private float timeElapsed;
private float valueToLerp;
private float delayTime = 5f;
Update()
{
if ( FadeOut)
{
valueToLerp = Mathf.Lerp(1, 0, timeElapsed / delayTime);
timeElapsed += Time.deltaTime;
textMesh.color = new Color(textMesh.color.r, textMesh.color.g,textMesh.color.b, valueToLerp);
}
}