【问题标题】:Fading TextMeshPro Alpha is instantly fading褪色 TextMeshPro Alpha 会立即褪色
【发布时间】:2021-09-03 07:42:44
【问题描述】:

我尝试使用 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

文本“upgrades”应该在 5 秒内淡出,在 0.4 秒内淡出。

我错过了什么吗?

【问题讨论】:

    标签: unity3d fade


    【解决方案1】:

    查看API -> Color

    每个颜色分量都是一个浮点值,范围从 0 到 1。

    原始颜色类型应该是 Color32 而不是

    每个颜色分量都是一个字节值,范围从 0 到 255。

    所以

    • 使用Color32(Color 和 Color32 之间存在隐式转换,因此您基本上可以交换使用它们,请参阅Color32.Color 和 Color32.Color32)

    • 或者只是将输入值更改为介于0 和1 之间的float。

    【讨论】:

      【解决方案2】:

      事实证明,Color 在内部使用 0 到 1 之间的值,而不是我一直认为的 0 到 255 之间的值。将上面的代码与 0 和 1 一起使用可以按预期工作。 LeanTween 版本也是如此。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 2012-10-24
        • 2015-03-16
        • 2012-05-29
        • 1970-01-01
        • 1970-01-01
        • 2016-06-26
        • 2023-03-27
        相关资源
        最近更新 更多