有没有办法使用 Animator 更改 TextMeshPro 的文本内容?
Is there a way to change the Text content of TextMeshPro using Animator?
我正在使用 Animator 创建一个 On/Off 切换按钮。
我试着让图片变了,颜色变了,文字变了。
结果换了图片和颜色,不知道怎么改文字内容。
我没有看到动画师添加的字段。
难道不能用动画师改变文字内容吗?
您问题的简短回答是否定的,您不能在 Unity 动画中应用称为 Type Writer 的效果。但是下面的代码解决了你的问题。下面的代码是一个基本的 Type Writer 效果,它通过调用 Coroutine 来工作。将你的TextMeshProUGI
设置为第一个参数,效果就完成了。
public TextMeshProUGUI tmp;
public void Start()
{
StartCoroutine(TypeWriter("Your text here..", .2f));
}
public IEnumerator TypeWriter(string text, float waitTime)
{
for (var i = 0; i < text.Length; i++)
{
tmp.text = text.Substring(0, i);
yield return new WaitForSecondsRealtime(waitTime);
}
}
如何给Animator添加Type Writer效果?
在这里,我建议在动画师中应用这种效果的好方法。在动画器中单击您想要的状态,然后单击 AddBehavior
创建 Type Writer 脚本。
最后,您所要做的就是将脚本引用到 OnStateEnter 事件。我已经从我的 MenuManager 单例中调用了这里的脚本,你也可以将它放在你的动画角色中。
public class TypeWriter : StateMachineBehaviour
{
public string text;
public float waitTime;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
MenuManager.singleton.StartCoroutine(TypeWriter(text, waitTime)); // reference your mono behaviour script here
}
}
如果你写过动画师角色内部的脚本类型编写器,你可以在下面获取。请记住将您的脚本名称替换为波纹管上的 Character
类型,并且 IEnumerator
只能用于 mono behavior
.
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.GetComponent<Character>().StartCoroutine(TypeWriter(text, waitTime)); // reference your mono behaviour script here
}
我正在使用 Animator 创建一个 On/Off 切换按钮。
我试着让图片变了,颜色变了,文字变了。
结果换了图片和颜色,不知道怎么改文字内容。 我没有看到动画师添加的字段。
难道不能用动画师改变文字内容吗?
您问题的简短回答是否定的,您不能在 Unity 动画中应用称为 Type Writer 的效果。但是下面的代码解决了你的问题。下面的代码是一个基本的 Type Writer 效果,它通过调用 Coroutine 来工作。将你的TextMeshProUGI
设置为第一个参数,效果就完成了。
public TextMeshProUGUI tmp;
public void Start()
{
StartCoroutine(TypeWriter("Your text here..", .2f));
}
public IEnumerator TypeWriter(string text, float waitTime)
{
for (var i = 0; i < text.Length; i++)
{
tmp.text = text.Substring(0, i);
yield return new WaitForSecondsRealtime(waitTime);
}
}
如何给Animator添加Type Writer效果?
在这里,我建议在动画师中应用这种效果的好方法。在动画器中单击您想要的状态,然后单击 AddBehavior
创建 Type Writer 脚本。
最后,您所要做的就是将脚本引用到 OnStateEnter 事件。我已经从我的 MenuManager 单例中调用了这里的脚本,你也可以将它放在你的动画角色中。
public class TypeWriter : StateMachineBehaviour
{
public string text;
public float waitTime;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
MenuManager.singleton.StartCoroutine(TypeWriter(text, waitTime)); // reference your mono behaviour script here
}
}
如果你写过动画师角色内部的脚本类型编写器,你可以在下面获取。请记住将您的脚本名称替换为波纹管上的 Character
类型,并且 IEnumerator
只能用于 mono behavior
.
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.GetComponent<Character>().StartCoroutine(TypeWriter(text, waitTime)); // reference your mono behaviour script here
}