Rect:rectangle矩形( new Rect(Left,Top,Width,Hight) )
primitive:原始的、简单的
UnityEngine:Unity引擎
************************************************************************************************************************************
本文的测试需要使用一个特殊的函数:OnGUI(),在该函数中加入实现UI的脚本;
OnGUI()函数:当在控制脚本激活的状态下,OnGUI()函数会在每帧调用,就像Update( )函数一样。
该函数一共有两种类型的接口:
GUI.xxx() ---GUI.Label(new Rect(100, 100, 500, 50), "Hello,this world!");
GUILayout.xxx() ---GUILayout.Label("请输入你的名字:"); //默认处于左上角
前者需要我们手动排版UI的位置,后者Unity会为我们自动进行排版。
<1> 脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleUI : MonoBehaviour {
public int Label_Font_Size = 15;
string Text = ""; //会被默认显示在TextField中
string Name = "";
void OnGUI() //每帧不断刷新该函数
{
GUILayout.Label("请输入你的名字:");
GUI.skin.label.fontSize = Label_Font_Size;
Text = GUILayout.TextField(Text); //每一次刷新都会将Text的数据传到TextField中,然后在对其中数据修改的时候又会被作为返回值带出给Text,往复循环达到了即时显示的目的
if (GUILayout.Button("提交")) //被点击,返回值为1
{
Name = Text;
}
if (!string.IsNullOrEmpty(Name)) //string类下的一个功能型子函数,用来判断当前字符串是否为空,为空返回1,非空返回0
{
GUILayout.Label("提交成功,名字:" + Name);
}
}
}
<2>运行结果
<1>脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleUI : MonoBehaviour {
public int Label_Font_Size = 15;
string Text = ""; //会被默认显示在TextField中
string Name = "";
void OnGUI() //每帧不断刷新该函数
{
GUILayout.Label("请输入你的名字:");
GUI.skin.label.fontSize = Label_Font_Size;
Text = GUILayout.TextField(Text); //每一次刷新都会将Text的数据传到TextField中,然后在对其中数据修改的时候又会被作为返回值带出给Text,往复循环达到了即时显示的目的
if (GUILayout.Button("提交")) //被点击,返回值为1
{
Name = Text;
}
if (!string.IsNullOrEmpty(Name)) //string类下的一个功能型子函数,用来判断当前字符串是否为空,为空返回1,非空返回0
{
GUILayout.Label("提交成功,名字:" + Name);
}
if (GUI.Button(new Rect(800,0,100,50),"创建球体"))
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Sphere);
obj.AddComponent();
obj.GetComponent().material.color = Color.red; //这里时GetComponent()
obj.name = "Sphere";
obj.transform.position = new Vector3(0, 20, 0);
}
if (GUI.Button(new Rect(800, 50, 100, 50), "创建立方体"))
{
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
obj.AddComponent();
obj.GetComponent().material.color = Color.green;
obj.name = "Cube";
obj.transform.position = new Vector3(0, 20, 0);
}
}
}
<2>运行结果
<3>分析
GameObject.CreatePrimitive()函数:创建一个游戏对象并指定一个Unity对象模型,如立方体、球体等;
参考游戏物体的实例化:Instantiate(GameObject,Position,Rotition) ---- 【点我即达】
AddComponent<>()函数:用于给游戏对象添加一个组件,在尖括号内部加上组件名称
GetComponent<>()函数:获得组件,用于对所获得组件进行属性的修改
修改颜色:需要获得渲染器renderer组件,然后调用material.color,对其进行赋值:Color.red
renderer.material.color:设置渲染材质的颜色
Color.red/green...:颜色类型
transform.position:设置该游戏对象的位置
GUIt.Button(new Rect(left,top,width,height),"Infomation");
GUIlayou.Button("Infomation",GUILayout.Width(xxx),GUILayout.Height(xxx));