我正在Unity3D中开发游戏,它是OnGUI()函数中的GUI代码。在我可以在新的Rect()参数中指定其尺寸之前,有没有办法用GUIStyle [和font]获取GUI Label的大小?如果有任何可能的方法,我可以使用它根据屏幕分辨率等一些因素动态更改标签的尺寸...
答案 0 :(得分:0)
我不确定它是否适用于您的情况,但可能有助于您找到正确的方向
/// <summary>
/// Calculate Render Width
/// </summary>
/// <param name="str"></param>
/// <param name="fontFamily"></param>
/// <param name="fontSize"></param>
/// <returns></returns>
public static float GetWidthOfString(string str, string fontFamily, int fontSize)
{
var font = new System.Drawing.Font(fontFamily, fontSize, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
var size = TextRenderer.MeasureText(str, font); // GDI
return size.Width;
}
答案 1 :(得分:0)
如果使用Unity,则不应使用System.Drawing。 请改用http://docs.unity3d.com/Documentation/ScriptReference/GUIStyle.CalcSize.html。 例如:
Vector2 size = yourStyle.CalcSize (new GUIContent ("your text"));
如果您使用当前皮肤中指定的样式,请yourStyle
(http://docs.unity3d.com/Documentation/ScriptReference/GUISkin.html)替换GUI.skin.[...]
。
然后你可以像这样使用它:
GUI.Label (new Rect (anchorX, anchorY, size.x, size.y), "your text");