设置文本

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

circle-info

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


UI 工具包

circle-check

Text Mesh Pro

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 随后还必须重新计算字符持续时间等。这意味着如果你每秒多次更改它(例如不断添加字母),这些计算会每次都发生。

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