设置文本

你可以通过两种不同的 UI 系统将文本设置到 Text Animator:

circle-info

此页面包含一些已经出现在 安装与快速开始中的信息,但也包含针对每个系统和一般情况的其他细节和建议。务必阅读 设置文本 一节!


UI 工具包

附注。假设你已经知道 如何使用 UI Toolkitarrow-up-right 以及它的功能。

从 UI Builder

  • 转到 库 -> 项目

  • 拖动 "AnimatedLabel" 从你的层级视图中的 "Custom Controls/Febucci/Text Animator for Unity"!

circle-info

我们正在努力确保你可以直接从 UI Toolkit 为内置的 Label 和 Button 添加动画! (Unity 6.3 及更高版本。) 保持更新!

你的 .uxml 应该看起来像这样:

通过代码

你可以创建一个 "Febucci.TextAnimatorForUnity.AnimatedLabel" 类的实例并将其添加到你的 UI 文档,像这样:

circle-check

Text Mesh Pro

附注。假设你已经知道 如何使用 Text Mesh Proarrow-up-right 以及它如何工作。

添加一个 Text Animator - Text Mesh Pro 组件到同一个具有 TextMeshPro 组件(无论是 UI 还是世界空间!):

你的检查器应如下所示:

circle-check
circle-exclamation

通过代码设置文本的最佳实践

若要通过代码将文本设置到你的 TextMeshPro 对象,请引用 Text Animator 的脚本而不是 TMPro,例如:

using UnityEngine;
using TMPro; 
using Febucci.TextAnimatorForUnity.TextMeshPro; // <- 导入 Text Animator 的命名空间

public class ExampleScript : MonoBehaviour
{
    [SerializeField] TMP_Text textMeshPro;
    [SerializeField] TextAnimator_TMP textAnimator;

    void Start()
    {
        // 🚫 不要:通过 TMPro 设置文本
        textMeshPro.SetText("<wave>hello");

        // ✅ 应当:直接通过 Text Animator 设置文本
        textAnimator.SetText("<wave>hello");
    }

}
circle-info

附注:引用 TMPro 仍然可以工作,但使用 TextAnimator 设置文本集成得更好,因为我们对文本有更多控制。


最佳实践

只设置整个文本/对话一次

请尽量只设置文本一次,并使用打字机/可见性方法来控制其显示方式。

circle-info

如果你确实需要在之后追加文本,可以使用 "textAnimator.AppendText" 方法。

chevron-right示例hashtag

如果有一个角色说“Helloooo how are you doing?”,并且你想逐字显示,只需: typewriter.ShowText("Hellooooo how are you doing?"); 就是这样! 动态显示和隐藏字母


如果你在构建动态字符串,你仍然可以在将其值设置给打字机/动画器之前完成构建。

(如果你使用对话系统,他们会为你处理这些 —— 不用担心! 集成)

chevron-right为什么我应该一次性设置整个文本,而不是逐字符设置?hashtag

性能!(即使你没有使用 Text Animator。)

每次设置文本时,TextMeshPro 或 UI 工具包都需要计算其网格、定位等,Text Animator 随后还必须重新计算字符持续时间等。这意味着如果你每秒多次更改它(例如不断添加字母),这些计算会每次都发生。

要逐个显示字符,你可以简单地先将完整文本设置一次,然后启动打字机: 动态显示和隐藏字母