首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextMeshPro没有正确显示"\n“新行

TextMeshPro没有正确显示"\n“新行
EN

Stack Overflow用户
提问于 2022-04-25 23:23:53
回答 1查看 729关注 0票数 2

在我的游戏中,我从文本文件中获取一个随机字符串,并将GameObjects TextMeshPro.Text更改为这一行。

代码语言:javascript
复制
[SerializeField] private TextMeshProUGUI endOfContentText;
[SerializeField] private TextAsset       messageTextFile;

private void OnEnable() {
    TextChangerOuter(ParseTextAsset());
}

private void ParseTextAsset() {
    var arrayString  = messageTextFile.text.Split('\n');
    foreach (var line in arrayString) {
        listOfWords.Add(line);
    }
}

private void TextChangerOuter(string text) {
        var rand      = new Random();
        var randomKey = listOfWords.ElementAt(rand.Next(0, listOfWords.Count));
        listOfWords.Remove(randomKey);
        endOfContentText.text = randomKey;
}

我遇到的问题是,这个文件中的一些行包含了"\n“新行,作为笑话的一部分。起初,我担心ParseTextAsset()方法会将这一行分割成许多空行,但没有发生这种情况。我没想到的是TextMeshPro没有正确地分析下面的一行。

奇怪的是,如果我进入检查器并手动更改文本,或者手动关闭和打开TextMeshPro组件,文本将按预期重新格式化。

在过去,我曾使用Canvas.ForceUpdateCanvases();修复UI的某些方面,但这一次不起作用。我甚至在这个组件生成文本之后编写了一个Coroutine来禁用和重新启用这个组件,但是这不起作用。

代码语言:javascript
复制
private IEnumerator SetShowNewMessageAfterFrame() {
    yield return new WaitForEndOfFrame();
    endOfContentText.enabled = false;
    yield return new WaitForEndOfFrame();
    endOfContentText.enabled = true;
    Canvas.ForceUpdateCanvases();
}

编辑:

根据Berk的应答项目设置/ TextMeshPro / Settings > Parse序列已经设置并产生了上述结果。

EN

回答 1

Stack Overflow用户

发布于 2022-04-26 02:23:12

TMpro组件有显示/隐藏转义序列的选项,您只需要在Project / TextMeshPro / Settings打开它,然后找到Parse序列选项并打开它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72006713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档