UGUI之在场景中设置、修改标签和按钮
UnityGUI使用一个特殊的OnGUI()函数,在该函数中加入实现UI的脚本。
它一共有两种类型的接口:GUI.xxx()和GUILayout.xxx()。
第一种需要自动手写填写处于屏幕上的位置。我之前学的教程都是用这种方式的,参考代码如下:
void OnGUI()
{
//居中显示文字
GUI.skin.label.alignment = TextAnchor.MiddleCenter;
//设置字体大小
GUI.skin.label.fontSize = 50;
//创建一个标签,用于在指定位置显示 Game Over,这个位置和标签的大小由new Rect()确定,数据大小视需要而定
GUI.Label(new Rect(0,0,Screen.width,Screen,height),"Game Over");
//创建一个Button,当按下时触发事件
if(GUI.Button(new Rect(Screen.width * 0.5f - 150,Screen.height * 0.7f,300,40),"Try again"))
{
//...
}
}
第二种方法是Unity为我们自动排版的,我们只需要关心内容即可。它主要含有三个函数:
- GUILayout.Label(string str):标签,用于显示文本。输入的参数为需要显示地文本。
- GUILayout.Button(string str):按钮,用于触发事件,输入的参数为在按钮上显示的文本。它返回一个Bool值,表明是否按下了按钮。
- GUILayout.TextField(string str):文本区域,用于输入文本。输入的参数为显示地文本,返回经过用户输入改动后的文本。
参考代码如下:
string text = "";
string name = "";
void OnGUI()
{
//用标签显示文本
GUILayout.Label("请输入你的名字: ");
//用文本区域输入你的名字
text = Layout.TextField(text);
if(GUILayout.Button("提交"))
{
name = Text;
}
//当name不为空时,显示输入的文本内容
if(!string.IsNullOrEmpty(name))
{
GUILayout.Label("提交成功!名字:" + name);
}
}
此示例的显示结果如下:
注:该结果显示在场景的左上方,这是Unity自动排版的结果。更多内容等我学了再说。