如何以编程方式在Unity中使GUI.Box角变圆

时间:2019-05-23 01:19:02

标签: c# unity3d

我对C#和Unity不太了解。我只是遵循Vuforia's Unity Cloud Recognition tutorial中的脚本,该脚本以编程方式创建了GUI Box。因此,我猜想所有使用Unity Inspector的样式解决方案都不适合我。

我当前的GUI.Box样式

Texture2D texture = new Texture2D(1, 1);
texture.SetPixel(0,0,Color.white);
texture.Apply();

GUIStyle myBoxStyle2 = new GUIStyle(GUI.skin.box);
myBoxStyle2.fontSize = 40;
myBoxStyle2.normal.background = texture;
myBoxStyle2.normal.textColor = Color.black;
myBoxStyle2.alignment = TextAnchor.MiddleLeft;
GUI.Box (new Rect(Screen.width/4,Screen.height/6,Screen.width/2,Screen.height/8), mTargetMetadata, myBoxStyle2);

它看起来像这样(白框)

enter image description here

我检查了GUI Style Manual,没有帮助。

1 个答案:

答案 0 :(得分:1)

圆角实际上是GUI.Box的默认样式。

默认情况下,内部afaik仅使用UISprite作为纹理。为了在MonoBehaviour组件上也能使用它,您可以使用

public Texture2D boxTexture;

并在其中引用UISprite以便将其用于您的样式。


但是听起来您的问题似乎更确切

如何更改GUI.Box的颜色?

因此,使用GUI可以直接使用来更改颜色

// store current values before changing
var color = GUI.color;
var contentColor = GUI.contentColor;

// change GUI colors
GUI.color = Color.white;
GUI.contentColor = Color.black;
{
    // draw Box with default style
    GUI.Box (new Rect(Screen.width/4,Screen.height/6,Screen.width/2,Screen.height/8), mTargetMetadata);
}
// reset GUI colors to former stored values
GUI.color = color;
GUI.contentColor = contentColor;

这应该已经解决了,或者您可以尝试执行相同的操作,但是使用GUI.backgroundColor而不是GUI.color。只是为了使列表完整:您可以使用GUI.contentColor更改文本颜色。


但是总的来说...我想说Vuforia在那给了你一个非常糟糕的选择。实际上,使用GUI是,可以追溯到Unity 4.5。 (2015年左右)。

它仍在使用,但实际上Building Custom Inspectors和其他编辑器脚本几乎只使用

现在,如注释中所述,您应该使用Unity 4.6中引入的"New" UI System