【Unity UI】TextMeshPro插件的使用(中文字,脚本更改文字内容)

导入TextMeshPro插件

在这里插入图片描述
可以选择只导入TMP Essemtials,也可以两个都导入。

导入中文字体

把ttf文件拖入文件夹中。

Window->Text Mesh Pro->Font Asset Creator

打开窗口,然后按照如图所示的内容选择,CharacterFile.txt中写了需要用的字,牢记要把txt文件存成UTF-8编码格式。
在这里插入图片描述

完成后点击Generate Font Atlas按钮,然后拉到下方Save文件。
选择TextMeshPro UI组件,设置字体:
在这里插入图片描述

脚本更改文字内容

private TextMeshProUGUI Text;

Text = transform.Find("Canvas").Find("Image").Find("Text").GetComponent<TextMeshProUGUI>();

Text.text = "提示";

问题解决

缺失中文字

中文字符集
确实字符集显示口,可能是由于复制时产生的编码问题,对于缺失的字新建一个txt,手动输入字,存储为UTF-编码格式,生成新的Unity字体。
在要使用的字体中加入备用字体:
在这里插入图片描述

### Unity TextMesh Pro InputField 使用教程 #### 基础概念 TextMesh Pro (TMP)Unity 提供的一种强大的文本渲染工具,能够显著提升文本的质量和表现力。TMP_InputField 是基于 TextMesh Pro 的输入框组件,用于替换传统的 `InputField` 组件[^2]。 --- #### 如何安装并启用 TextMesh Pro 1. **导入包** 如果尚未安装 TextMesh Pro,请通过 Unity Package Manager 导入插件。路径为:`Window -> Package Manager -> TextMesh Pro` 并点击 Install。 2. **创建资源文件夹** 安装完成后,在 Assets 文件夹中会自动创建一个名为 `TextMesh Pro Resources` 的文件夹,其中包含了默认字体和其他必要资源。 3. **配置场景对象** 将现有 UI 中的 `InputField` 替换为 `TMP_InputField`。可以手动删除原生 `InputField` 并重新添加 `TextMeshPro - Input Field` 预制体,或者使用升级工具完成转换[^1]。 --- #### 设置 TMP_InputField 属性 以下是常见的属性及其作用: 1. **Font Asset**: 指定要使用字体资产(Font Asset),这是 TextMesh Pro 渲染的核心部分。可以通过 Font Atlas Generator 工具生成自定义字体集[^4]。 2. **Rich Text**: 启用此选项可支持丰富的 HTML 标签格式化功能,例如 `<color>`, `<size>` 等。 3. **Character Limit**: 限制用户可以在输入框中键入的最大字符数。 4. **Line Type**: 单行或多行模式切换。如果需要多行输入,则应将其设置为 Multi Line,并配合滚动条一起工作[^5]。 5. **Interactable**: 控制输入框是否允许交互操作。 6. **Read Only**: 设定输入框只读状态,防止玩家修改内容。 7. **Placeholder**: 可以为未填写数据时提供占位符提示文字。 --- #### 实现渐变色效果 为了使输入框内的文本呈现渐变色彩,需编写一段简单的脚本来动态更改颜色数组。具体方法如下所示: ```csharp using TMPro; using UnityEngine; public class GradientColor : MonoBehaviour { public TMP_InputField inputField; // 引用目标 TMP_InputField void Start() { if (inputField != null) { var textInfo = inputField.textComponent.textInfo; foreach (var character in textInfo.characterInfo) { int index = character.index; Color color = new Color( Mathf.PingPong(index * 0.1f, 1), // Red component Mathf.PingPong(index * 0.2f, 1), // Green component Mathf.PingPong(index * 0.3f, 1)); // Blue component inputField.caretPositionAnimator.color = color; } } } } ``` 上述代码片段展示了如何逐字应用不同颜色来模拟渐变效果[^3]。 --- #### 添加滚动条支持 当希望处理大量文本输入时,可能需要用到垂直滚动条辅助浏览全部内容。按照以下步骤执行即可轻松集成滚动条至您的界面设计当中: 1. 在 Hierarchy 视图里选中目标 `TMP_InputField` 对象; 2. 转向 Inspector 窗口下的 Component 列表区域寻找 “Add Component” 按钮; 3. 找到类别分类项下拉菜单选择 `UI->Scrollbar` 条目; 4. 把新建出来的 Scrollbar 子节点拖放到对应父级容器内部作为子物体存在; 5. 修改 Scrollbar 方向参数值设成 Vertical 表达上下滑动意图; 6. 返回原始焦点回到最初选定的那个 InputField 上面去找到它的专属字段叫做 `Vertical Scrollbar` ,然后把刚才制作好的那个 scrollbar 放进去关联起来就完成了整个绑定过程! --- #### 解决常见问题 1. **中文乱码** 当遇到无法正确显示某些特定语言字符的情况时,请确认已加载相应的字体文件,并确保这些字体被包含进了当前所选用的 Font Asset 中。 2. **性能优化不足** 文本更新频繁可能会引起卡顿现象发生。建议减少不必要的实时计算逻辑数量,比如避免每次按键触发复杂的图形变换动作等行为。 3. **跨平台兼容性差** 不同设备间可能存在分辨率适配差异等问题影响实际体验感观一致性水平高低不平的现象出现。针对这种情况我们应当采取统一标准化测量单位像素密度比例系数来进行精确调控管理从而达到理想预期成果展现形式标准之上。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值