C# 富文本的问题及其在unity中如何在屏幕上更新
对于我的游戏,我希望有一个对话系统,其中一些单词的颜色不同。现在,我使用.ToCharArray命令在屏幕上键入了正常的白色文本。这允许我一次在屏幕上键入一个字母。我还查找并发现了一种称为富文本和标记的东西,它允许我用不同的颜色给文本上色,而将其余部分保留为白色。问题是,正在键入句子,然后在ui中更新以显示颜色,因此在短暂的一秒钟内,将显示句子,直到文本变为绿色。有没有办法使文本的颜色生效?是否有一种资产可以让我在统一中改变某些单词的颜色?任何帮助都将不胜感激 在DataBlock脚本对象中,我在文本区域中键入了我想要的句子。然后我把我想改变的词放在周围。这导致TypeSentance协同例程键入从可脚本对象提取的sentance。这也使得TypeSentance协同程序能够在第二次更新之前打印出文本和文本周围的内容 第一稿 第二稿C# 富文本的问题及其在unity中如何在屏幕上更新,c#,unity3d,C#,Unity3d,对于我的游戏,我希望有一个对话系统,其中一些单词的颜色不同。现在,我使用.ToCharArray命令在屏幕上键入了正常的白色文本。这允许我一次在屏幕上键入一个字母。我还查找并发现了一种称为富文本和标记的东西,它允许我用不同的颜色给文本上色,而将其余部分保留为白色。问题是,正在键入句子,然后在ui中更新以显示颜色,因此在短暂的一秒钟内,将显示句子,直到文本变为绿色。有没有办法使文本的颜色生效?是否有一种资产可以让我在统一中改变某些单词的颜色?任何帮助都将不胜感激 在DataBlock脚本对象中,我
我希望结果是文本以我选择的颜色输出,但它是用和打印的,然后更新以显示颜色您的描述不清楚,因为您缺少一些字符,并且没有给出示例
正文
。此外,还不清楚您使用哪个UI组件
尽管如此,我假设您在遍历字符串时将无效标记设置为文本。您可以在中找到有关受支持的RichtText的更多信息
例如:
- 此文本效果良好:
“此文本为绿色和红色”
- 此文本缺少结束标记,
-并且不会被
组件:UI解析为
。textRichText
“此文本为绿色
此外,您还必须忽略开始标记 您的代码有更多错误
private void Update()
{
updateGraphic()
}
如果您正在正确更新,但一帧显示的文本为全白色,则只需在对象关闭时更新文本(
gameObject.SetActive(false)
),然后将其关闭,即可在第一帧上应用更改gameObject.SetActive(true)
public class GameCode : MonoBehaviour
{
[SerializeField] DataBlock[] DataBlocks;
int currentDataBlock = 0;
private void update()
{
updateGraphic()
}
public void updateGraphic()
{
StopAllCoroutines();
StartCoroutine(TypeSentance(DataBlocks
[currentDataBlock].getBodyText()));
currentDataBlock++
}
IEnumerator TypeSentance(string sentance)
{
bodyTextBox.text = "";
foreach (char letter in sentance.ToCharArray())
{
bodyTextBox.text += letter;
yield return new WaitForSeconds(0.001f);
}
}
}
private void Update()
{
updateGraphic()
}