UGUI获取Text文本的绘制长度,不同于Text的rectTransform.sizeDelta
/// <summary>
/// 获取文本的绘制长度,不同于text的rectTransform.sizeDelta
/// </summary>
/// <param name="str">文本</param>
/// <returns></returns>
public static int GetFontlen(string str)
{
int len = 0;
Font font;
font = Font.CreateDynamicFontFromOSFont("Arial", 25);
font.RequestCharactersInTexture(str);
for (int i = 0; i < str.Length; i++)
{
CharacterInfo ch;
font.GetCharacterInfo(str[i], out ch);
len += ch.advance;
}
return len;
}
下面这是宣雨松的代码,和我不一样。
void Start () {
Font font = Resources.Load<Font>("FZCQJW");
int fontsize=35;
string text = "宣雨松MOMO";
font.RequestCharactersInTexture(text,fontsize,FontStyle.Normal);
CharacterInfo characterInfo;
float width=0f;
for(int i=0; i<text.Length;i++){
font.GetCharacterInfo(text[i],out characterInfo,fontsize);
//width+=characterInfo.width; unity5.x提示此方法将来要废弃
width+=characterInfo.advance;
}
Debug.Log("width : " + width);
}