我正在用C#和Unity开发一个视频游戏,我的TypeDialog IEnumerator函数是用来在UI文本框中输入字符串的,这个函数可以工作,但是当它被调用两次时,它会试图同时输出两个字符串。
因此,例如,如果我调用函数并传入字符串“string 1”,几秒钟后再次调用它并传入“string 2”,UI文本框将显示消息为“ssttrriinngg 12”。我如何更改此代码,以便在第二次调用它时,它将停止打印第一条消息?
public IEnumerator TypeDialog(string dialog)
{
dialogText.text = "";
foreach (var letter in dialog.ToCharArray())
{
dialogText.text += letter;
yield return new WaitForSeconds(1f / letterPerSecond);
}
yield return new WaitForSeconds(1f);
}
2条答案
按热度按时间qlvxas9a1#
听起来你只需要停止之前的协程。
当你调用StartCoroutine()时,你可以把它生成的协程保存到类中的一个变量中,然后在需要的时候停止它。
6yt4nkrj2#
在私有变量中缓存
Coroutine
,然后在下一个对话框之前停止。