Unity C# 协程:避免在滚动显示文本时显示富文本标记
{"title": "Unity C# 协程:避免在滚动显示文本时显示富文本标记", "description": "本文介绍了如何在 Unity C# 中使用协程来滚动显示文本,并提供了一种方法来避免显示富文本标记。示例代码展示了如何检测富文本标记并将其跳过,从而确保文本的正常显示。", "keywords": "Unity, C#, 协程, 滚动文本, 富文本, 标记, 避免, 代码示例", "content": ""private IEnumerator ScrollingText()\n{\n isScrolling = true;\n dialogueText.text = "";\n bool isRichTextTag = false;\n string richTextTag = "";\n foreach (char letter in dialogueLines[currentLine].ToCharArray())\n {\n if (letter == '<')\n {\n isRichTextTag = true;\n richTextTag = "";\n }\n else if (letter == '>')\n {\n isRichTextTag = false;\n richTextTag += '>';\n dialogueText.text += richTextTag;\n }\n \n if (!isRichTextTag)\n {\n dialogueText.text += letter;\n }\n else\n {\n richTextTag += letter;\n }\n \n yield return new WaitForSeconds(textSpeed);\n }\n isScrolling = false;\n}\n"\n这是一段将文本内容一个字一个字地显示出来的协程函数,当文本内容为富文本,例如"<color=red>单独的几个字"时,这个方法会显示出<color=red>和之后才给文本变换颜色,如果我要检测这样的富文本并且避免显示出富文本的标记,这段代码该如何更改内容:要避免显示富文本标记,你可以在每次迭代时检查当前字符是否是富文本标记的起始或结束标记,并跳过这些字符。以下是修改后的代码示例:\n\ncsharp\nprivate IEnumerator ScrollingText()\n{\n isScrolling = true;\n dialogueText.text = \"\";\n bool isRichTextTag = false;\n string richTextTag = \"\";\n foreach (char letter in dialogueLines[currentLine].ToCharArray())\n {\n if (letter == '<')\n {\n isRichTextTag = true;\n richTextTag = \"\";\n }\n else if (letter == '>')\n {\n isRichTextTag = false;\n richTextTag += '>';\n dialogueText.text += richTextTag;\n }\n \n if (!isRichTextTag)\n {\n dialogueText.text += letter;\n }\n else\n {\n richTextTag += letter;\n }\n \n yield return new WaitForSeconds(textSpeed);\n }\n isScrolling = false;\n}\n\n\n这样修改后,如果遇到起始标记<,则会将isRichTextTag设置为true,并创建一个空字符串richTextTag用于存储富文本标记。然后,如果遇到结束标记>,则将isRichTextTag设置为false,并将richTextTag中的标记添加到文本中。在富文本标记之间的字符不会被添加到文本中,而是添加到richTextTag中。这样就可以避免显示富文本标记。
原文地址: http://www.cveoy.top/t/topic/pJqw 著作权归作者所有。请勿转载和采集!