U4S5L7——脚本控制TMP
U4S5L7——脚本控制TMP
本章代码关键字
1 | TMPro //TextMeshPro相关组件的命名空间 |
脚本获取TMP UI组件
- 需要引用
TMPro
命名空间 - TMP UI组件名为
TextMeshProUGUI
1 | using UnityEngine; |
TMP UI组件常用属性
-
文本内容
直接修改
text
属性即可修改显示的文本内容1
2
3
4
5
6public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.text = "123123aaafff";
}显示效果:
-
字体
从外部关联或者加载一个
TMP_FontAsset
类型的资源,然后通过font
属性即可更换显示字体1
2
3
4
5
6
7
8public TextMeshProUGUI tmpUIText;
public TMP_FontAsset fontAsset; //可以通过外部关联一个TMP字体资源,也可以读取字体
private void Start()
{
tmpUIText.text = "123123aaafff";
tmpUIText.font = fontAsset;
}显示效果:
-
字体大小
直接修改
fontSize
属性即可修改显示的文本字号大小1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.text = "123123aaafff";
tmpUIText.fontSize = 10;
} -
颜色
直接修改
color
属性即可修改显示的文本顶点(整体)颜色1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.text = "123123aaafff";
tmpUIText.color = Color.black;
}显示效果:
-
对齐方式
直接修改
alignment
属性即可修改显示的文本对齐方式,具体的对齐方式可见TextAlignmentOptions
枚举的定义1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.text = "123123aaafff";
tmpUIText.alignment = TextAlignmentOptions.Center;
} -
行间距
直接修改
lineSpacing
属性即可修改显示的文本行间距1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.text = "123123\nabcdef\n!@#$%";
tmpUIText.lineSpacing = 20;
}显示效果(左为不调整,右为调整为20):
-
是否启用富文本
richText
决定是否可以启用富文本1
2
3
4
5
6public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.richText = true;
}
TMP UI组件常用方法
-
设置文本内容,支持富文本格式
除了
text
属性,还可以通过SetText()
方法设置显示内容1
tmpUIText.SetText("123123123123123");
-
强制重新构建文本网格,通常在文本内容或样式更改后使用
需要传入一个
CanvasUpdate
枚举(位于UnityEngine.UI
命名空间下),不同的枚举值代表重新构建的时机不同1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.SetText("123123123123123");
tmpUIText.Rebuild(UnityEngine.UI.CanvasUpdate.Prelayout);
}各个枚举值代表的时机如下:
1
2
3
4
5
6
7
8
9public enum CanvasUpdate
{
Prelayout = 0, //布局前调用
Layout = 1, //布局时调用
PostLayout = 2 //布局后调用
PreRender = 3, //渲染前调用
LatePreRender = 4, //渲染后调用
MaxUpdateValue = 5 //最后调用
} -
强制更新文本网格,运行时动态更改文本时调用
TMP中的每个文字都有自己的网格,通过该方法可以强制更新文本网格
1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.SetText("123123123123123");
tmpUIText.ForceMeshUpdate();
} -
获取文本中的字符数
1
2
3
4
5
6
7public TextMeshProUGUI tmpUIText;
private void Start()
{
tmpUIText.SetText("123123123123123");
print(tmpUIText.text.Length);
}输出:
UI事件监听
如果我们想要为TMP UI添加交互事件,可以使用 UGUI 的 EventTrigger 的方式
1 | public class Lesson3 : MonoBehaviour |
点击文本输出:
如果点击未响应,请检查 TMP UI 组件的 Raycast Target:射线检测目标 是否开启
更多API
更多API,详见:Class TextMeshProUGUI | TextMeshPro | 4.0.0-pre.2 (unity3d.com)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文KRIFE齐的博客!