我正在使用动画器来创建一个开关按钮。
我试着改变图像,改变颜色,改变文字。
因此,我改变了图像和颜色,但我不知道如何更改文本内容。我看不到动画师添加的字段。
用动画师更改文本内容是不可能的吗?
发布于 2022-05-30 12:13:21
对您的问题的简短回答是“否”,您不能在“统一”动画中应用名为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);
}
}
如何在动画中添加类型写作效果?
在这里,我建议一个很好的方法来应用于动画师。在动画器中单击所需的状态,然后单击AddBehavior
以创建类型写入脚本。
最后,您所要做的就是将脚本引用到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
}
https://stackoverflow.com/questions/72433852
复制相似问题