如何获得GUI标签的大小?

时间:2014-02-05 04:19:13

标签: c# unity3d unityscript

我正在Unity3D中开发游戏,它是OnGUI()函数中的GUI代码。在我可以在新的Rect()参数中指定其尺寸之前,有没有办法用GUIStyle [和font]获取GUI Label的大小?如果有任何可能的方法,我可以使用它根据屏幕分辨率等一些因素动态更改标签的尺寸...

2 个答案:

答案 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"));

如果您使用当前皮肤中指定的样式,请yourStylehttp://docs.unity3d.com/Documentation/ScriptReference/GUISkin.html)替换GUI.skin.[...]。 然后你可以像这样使用它:

GUI.Label (new Rect (anchorX, anchorY, size.x, size.y), "your text");