我一直在寻找一种方法来淡化 Unity 中 TextMesh-Text 的 alpha 值,但我无法在线找到解决方案,也无法在LeanTween 文档中找到解决方案。
- LeanTween.alphaText()只适用于普通的 UI 文本(不是 TextMesh)
- LeanTween.alpha()在 Text 上没有为我做任何事情。
我一直在寻找一种方法来淡化 Unity 中 TextMesh-Text 的 alpha 值,但我无法在线找到解决方案,也无法在LeanTween 文档中找到解决方案。
在简要浏览了 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;
}
您还可以使用以下行扩展 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;
}
我想出了自己的解决方案。
我没有直接更改 TextMesh-Component 的 alpha,而是将 CanvasGroup 添加到包含我的 TextMesh-Component 的 Gameobject。然后我改为操纵 CanvasGroup 的 alpha 值。
要使用我的示例代码:
延迟 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);
}
}