3

我一直在寻找一种方法来淡化 Unity 中 TextMesh-Text 的 alpha 值,但我无法在线找到解决方案,也无法在LeanTween 文档中找到解决方案。

  • LeanTween.alphaText()只适用于普通的 UI 文本(不是 TextMesh)
  • LeanTween.alpha()在 Text 上没有为我做任何事情。
4

3 回答 3

3

在简要浏览了 API 之后,我猜想一种更好的方法,而不是CanvasGroups仅仅为了淡化一个文本而引入它,而宁愿使用LeanTwean.value它来设置它的color. CanvasGroup在我看来,这里有点矫枉过正。

(示例取自 API)

TextMeshProUGUI text;

void Start()
{
    text = GetComponent<TextMeshProUGUI>();
    var color = text.color;
    var fadeoutcolor = color;
    fadeoutcolor.a = 0;
    LeanTween.value(gameObject, updateValueExampleCallback, fadeoutcolor, color, 1f).setEase(LeanTweenType.easeOutElastic).setDelay(2f);
}


void updateValueExampleCallback(Color val)
{
    text.color = val;
}
于 2020-03-03T13:01:25.857 回答
3

您还可以使用以下行扩展 LeanTween 扩展方法文件 (LeanTweenExt.cs)。此方法将允许您在 textMeshes 上应用 LeanAlphaText,就像您在 UI 文本上所做的那样。

public static LTDescr LeanAlphaText (this TextMesh textMesh, float to, float time) {
    var _color = textMesh.color;
    var _tween = LeanTween
        .value (textMesh.gameObject, _color.a, to, time)
        .setOnUpdate ((float _value) => {
            _color.a = _value;
            textMesh.color = _color;
        });
    return _tween;
}
于 2020-03-31T17:05:22.333 回答
1

我想出了自己的解决方案。

我没有直接更改 TextMesh-Component 的 alpha,而是将 CanvasGroup 添加到包含我的 TextMesh-Component 的 Gameobject。然后我改为操纵 CanvasGroup 的 alpha 值。

要使用我的示例代码:

  1. 在你的画布上:[RightClick] > UI > Text - TextMeshPro
  2. 将我的示例脚本附加到这个游戏对象。(这会自动创建所需的 CanvasGroup)
  3. 按播放 (Ctrl + P)

延迟 2 秒后(因为 of.setDelay(2f) 文本应该淡入。

示例代码:

using UnityEngine;
using TMPro;

[RequireComponent(typeof(CanvasGroup))]
public class LeanTweenTextFade : MonoBehaviour
{          
    private void Start()
    {
        CanvasGroup canvasgroup = this.gameObject.GetComponent<CanvasGroup>();
        TextMeshProUGUI infoTextTMPro = this.gameObject.GetComponent<TextMeshProUGUI>();

        canvasgroup.alpha = 0f;
        infoTextTMPro.text = "This Text should fade in.";

        float duration = 1f;
        LeanTween.alphaCanvas(canvasgroup, 1.0f, duration).setDelay(2f);
    }
}
于 2020-03-03T12:37:37.750 回答