这是一个奇怪的错误。我基本上有一个对话列表,我随机将它们作为字符串传递给协程。字符串被转换为字符数组,字符被添加到 text mesh pro 的文本元素中,一个字符一个字符地添加,它们之间有短暂的延迟。打字机效果的典型方式。无论如何,它大部分时间都可以正常工作,但有时 text mesh pro 中的文本会断断续续。例如,“你好”变成“Heeeelllllooooooo”。我检查了一下,通过协程传递的文本没有问题,只有 text mesh pro 中的文本乱七八糟。所以很明显是协程的问题。知道是什么原因造成的吗?顺便说一句,这是我的协程......
IEnumerator TypeSentence(string sentence)
{
List<char> chararray = sentence.ToCharArray();
dialoguefinished = false;
var waitTimer = new WaitForSeconds(0.004f);
foreach (char letter in chararray)
{
if (readingcode==false) //Normal running
{
dialogueTMPtext.text += letter;
yield return waitTimer;
}
}
dialoguefinished = true;
}
我尝试将其作为列表传递,还尝试更改等待时间。但是还是没有解决口吃的问题。奇怪的是口吃只是随机发生的。几乎十分之三。
我在评论中与Frenchy想到了同样的事情。
同样,如果先修改一个字符串对象,然后设置为文本组件,则更安全。这应该可以正常工作。 如果您遇到任何错误,请记录“currentText”变量并与我们分享。
IEnumerator TypeSentence(string sentence)
{
List<char> chararray = sentence.ToCharArray();
string currentText = "";
dialoguefinished = false;
var waitTimer = new WaitForSeconds(0.004f);
foreach (char letter in chararray)
{
if (readingcode == false)
{
currentText += letter;
dialogueTMPtext.text = currentText;
yield return new WaitForSeconds(0.004f);
}
}
dialoguefinished = true;
}