修改自https://blog.csdn.net/qq_20849387/article/details/71077772
在原文的基础上增加了居中对齐和右对齐,与Text组件的设置保持一致;修改了换行检测的逻辑,原文需要在Text中手动输入回车,然后在字符串中检测\n来区分换行,这样是不支持自动换行的情况的,这种情况下文本会错位。
检测自动换行的思路是:6个为一组取出构成一个字符的三角面片的所有顶点,计算出矩形中心点的坐标,当两个字符的中心y坐标超过1/2的FontSize时,即表示这两个字符位于不同的行。这种检测方式对于自动换行和手动换行都支持。
计算矩形中点的方法很简单,因为这六个点分别位于矩形四个顶点和对角线两端,直接六个点加和然后除以六即可得到中心点坐标了。
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Line {
private int _startVertexIndex = 0;
/// <summary>
/// 起点索引
/// </summary>
public int StartVertexIndex {
get {
return _startVertexIndex;
}
}
private int _endVertexIndex = 0;
/// <summary>
/// 终点索引
///