untiy的UGUI中Text文本框输入空格自动换行问题及解决方法

mac2025-09-26  15

问题原因:

在使用TEXT的时候 会发现 如果在中文与中文之间打空格会导致文本换行,这是因为中文半角空格 与英文空格相同,text默认为英文空格,会自动判断你空格后单词能否放下,如果这行放不下就自动给你换行,应用在中文字符上,就判断后面的所有为一个单词,所以就换行了。

解决办法:

1.换成全角空格

简单粗暴直接, 不过很难看(放弃)

2.替换text中的空格编码格式

using UnityEngine.UI; using UnityEngine; [RequireComponent(typeof(Text))] public class NonBreakingSpaceTextComponent : MonoBehaviour { public static readonly string no_breaking_space = "\u00A0"; protected Text text; // Use this for initialization void Awake () { text = this.GetComponent<Text>(); text.RegisterDirtyVerticesCallback(OnTextChange); } public void OnTextChange() { if (text.text.Contains(" ")) { text.text = text.text.Replace(" ", no_breaking_space); } } }

将NoBreakingSpaceTextComponent挂在Text组件上,每当Text设置text文字,准备重新绘制Text网格时,NoBreakingSpaceTextComponent会检查并替换text文字里的换行空格。

最新回复(0)