如何通过脚本为TextMeshProUGUI的RTL文本输入框写入内容
TextMeshPro RTL输入框脚本写入实现方法
TextMeshPro(含内置RTL支持版本、第三方RTL增强TMP插件)的输入框核心组件为TMP_InputField,和UGUI原生InputField不通用,按以下步骤操作即可:
- 首先在脚本顶部引入TMP命名空间,否则无法识别对应组件:
using TMPro; - 获取目标输入框组件,二选一即可:
- 脚本挂在输入框对象上时,直接调用
GetComponent<TMP_InputField>()获取 - 脚本挂在其他对象上时,在脚本内声明公开字段
public TMP_InputField targetRtlInput;,回到Unity Inspector把场景里的RTL输入框对象拖到这个字段上完成赋值,这种方式最不容易出错
- 脚本挂在输入框对象上时,直接调用
- 写入内容直接操作组件的
text属性即可,RTL文本的排版、语序修正会由TMP的RTL模块自动处理,不需要手动做文本翻转、顺序调整,示例代码:using UnityEngine; using TMPro; public class WriteToRtlInput : MonoBehaviour { public TMP_InputField targetRtlInput; // 测试调用 void Start() { // 替换为你要写入的RTL文本,比如阿拉伯语、希伯来语内容 string rtlContent = "نص عربي للاختبار"; // 赋值即完成写入 targetRtlInput.text = rtlContent; } }
排查提示:如果赋值后文本RTL显示错乱,先检查输入框组件上的RTL支持开关是否勾选:TMP 3.0及以上原生版本在TMP_InputField组件关联的TMP_Text子组件上勾选
Right To Left选项即可,第三方RTL插件则勾选插件自带的RTL启用开关。
组件参考截图:
内容的提问来源于stack exchange,提问作者user11369406
相关产品推荐
相关产品推荐

