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); }