Unity中Text Mesh Pro拼接空格文本在Windows与Mac显示差异原因?
Unity Text Mesh Pro 跨平台文本拼接显示异常排查与解决
问题现象
使用Unity引擎结合Text Mesh Pro开发游戏时,通过以下代码拼接名字与姓氏:
text.text = Data.FirstName + ' ' + Data.LastName;
- Windows系统显示正常:

- Mac系统显示异常:姓氏被强制拉回行首,再被添加的空格向后偏移

补充测试:在Windows系统中,若将空格替换为"\r "(回车符加空格),也能复现该异常。
根因分析
异常表现完全匹配文本中混入**回车符(\r)**的特征:Windows的文本渲染对\r处理较为宽松,而Mac系统会将\r视为行首重置指令,导致后续文本回到行首,再被空格偏移。大概率是Data.FirstName的末尾隐藏了\r字符。
解决方法
1. 清理文本中的控制字符
拼接前移除名字里的\r、\n等非打印控制字符:
var cleanFirstName = Data.FirstName.Replace("\r", "").Replace("\n", ""); text.text = cleanFirstName + " " + Data.LastName;
2. 兼顾首尾空白清理(可选)
如果数据可能包含多余首尾空格,结合Trim()优化处理:
var cleanFirstName = Data.FirstName.Trim().Replace("\r", "").Replace("\n", ""); var cleanLastName = Data.LastName.Trim().Replace("\r", "").Replace("\n", ""); text.text = $"{cleanFirstName} {cleanLastName}";
3. 从数据源根治
检查Data.FirstName的来源(配置文件、后端接口、用户输入等),排查是否在数据录入或传输环节意外引入了回车符,从源头避免问题。
内容的提问来源于stack exchange,提问作者lomstfer
相关产品推荐
相关产品推荐

