Как исчезнуть TextMe sh alpha с LeanTween? - PullRequest
1 голос
/ 03 марта 2020

Я искал способ затухания альфа-значения TextMe sh -Текста в Unity, но не смог найти решение онлайн или в документации LeanTween .

  • LeanTween.alphaText () работает только с обычным текстом пользовательского интерфейса (не TextMe sh)
  • LeanTween.alpha () не работает сделай что-нибудь для меня в тексте.

Ответы [ 3 ]

1 голос
/ 03 марта 2020

После краткого изучения 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;
}
1 голос
/ 31 марта 2020

Вы также можете расширить файл методов расширения LeanTween (LeanTweenExt.cs) следующими строками. Этот метод позволит вам применить LeanAlphaText к textMeshes, как вы привыкли делать с текстами пользовательского интерфейса.

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;
}
0 голосов
/ 03 марта 2020

Я придумал собственное решение.

Вместо непосредственного изменения альфа-компонента TextMe sh -компонента, я добавляю CanvasGroup в Gameobject, который содержит мой-компонент TextMe sh. Затем я манипулирую альфа-значением CanvasGroup.

Чтобы использовать мой пример кода:

  1. На вашем холсте go: [RightClick]> UI> Text - TextMeshPro
  2. Прикрепите мой пример скрипта к этому игровому объекту. (При этом автоматически создается требуемая группа CanvasGroup)
  3. Нажмите Play (Ctrl + P)

После задержки в 2 секунды (из-за .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);
    }
}
...