1、Label:标签控件,可以在游戏中用来展示文本字符串信息,不仅可以写字还可以贴图片。
2、Button:按钮控件,一般分图片按钮和普通的按钮,还有一个连续按钮RepeatButton注意,这个在WebForm里面是没有的。
Ps:用GUI.Button(new Rect(10,200,70,30),"文字按钮" )来添加按钮时这个方法是有返回值的bool类型;
3、TextField:主要用于监听用户输入的信息。
Ps:GUI.TextField(),返回用户输入的字符串信息,GUI.PasswordField()
4、ToolBar:用于创建工具栏,以Tab页面形式来展示,选择任意一项后可返回所选的ID。
5、Slider控件
基本知识:Slider控件由滑块与滑动条组成;按展示方式划分为:水平滑动条(HorizontalSlider [ˌhɔriˈzɔntəl] adj.),垂直滑动条(VerticalSlider[ˈvɜ:tɪkl]adj. 垂直的,竖立的 ),二者之间的用法基本相同;
作 用:常使用滑动条来调节音量或者颜色等
6、ScrollView控件 =>相当于webform中的滚动条
使用条件:若游戏界面中的GUI控件过多,超出了屏幕的显示范围,就需要使用ScrollView控件来完成它的展示效果。
7、群视图:GroupView控件
1、群组视图(GroupView控件)可将多个视图全部放在一个群组当中。将视图添加进群组当中后,群组中任何视图的坐标都是相对坐标,它是相对群组视图左上角的坐标。
2、使用GUI.BeginGroup()方法可以创建一个群组视图,但是必须以GUI.EndGroup()方法结束群组视图
8、窗口
窗口在游戏开发中并不陌生,所有视图都需要依赖窗口来显示,我们可以把窗口理解为视图的父类。 游戏视图,它们都属于窗口的子类。游戏界面可以由若干个窗口组成,窗口又由若干个视图组成。
9、GUI Skin 为控件添加漂亮的皮肤
在Project视图中点击“Create”→“GUI Skin”菜单项,创建一个GUI Skin。使用GUI Skin,可以修改任何系统提供的控件皮肤。
Font:可设置系统字体或者自定义字体。
Box:可设置盒子的显示皮肤。
Button:可设置按钮的显示皮肤。
Toggle:可设置选择框的显示皮肤。['tɒɡl]
Label:可设置文本框的显示皮肤。
Text Field:可设置输入框的显示皮肤。
Text Area:可设置多行输入框的显示皮肤。
Window:可设置窗口的显示皮肤。
Horizontal Slider:可设置水平滚动条的显示皮肤。[ˌhɔriˈzɔntəl]
Horizontal Slider Thumb:可设置水平滚动条上滑动块的显示皮肤。['slaɪdə(r)]n. 滑雪者,滑冰者;
Vertical Slider:可设置垂直滑动条的显示皮肤。[ˈvɜ:tɪkl]
Vertical Slider Thumb:可设置垂直滑动条上滑动块的显示皮肤。[θʌm]n.
Horizontal Scrollbar:可设置水平滚动条的显示皮肤。
Horizontal Scrollbar Thumb:可设置水平滚动条上滑块的显示皮肤。
Horizontal Scrollbar Left Button:可设置水平滚动条左边按钮的显示皮肤。[skrəʊl]
Horizontal Scrollbar Right Button:可设置水平滚动条右边按钮的显示皮肤。
Vertical Scrollbar:可设置垂直滚动条的显示皮肤。
Vertical Scrollbar Thumb:可设置垂直滚动条上滑块的显示皮肤。
Vertical Scrollbar Up Button:可设置垂直滚动条上边按钮的显示皮肤。
Vertical Scrollbar Down Button:可设置垂直滚动条下边按钮的显示皮肤。
Scroll View:可设置滚动视图的显示皮肤。
Custom Styles:自定义风格显示皮肤。
Settings:一些其他设置。
学习宣老师的《Unity3D游戏开发》,老师用到是js写的,我这边C# 经运行暂时么发现问题
using UnityEngine; using System.Collections; public class Csharp3_1 : MonoBehaviour { #region 只有公有变量才可以在编辑器中以拖曳对象或输入的形式赋值。 /// <summary> /// 接收外部赋值字符串 /// </summary> public string str = string.Empty; /// <summary> /// 接收外部赋值贴图 /// </summary> public Texture imageTexture; #endregion /// <summary> /// 贴图宽度 /// </summary> private int imageWidth; /// <summary> /// 贴图高 /// </summary> private int imageHeight; /// <summary> /// 当前屏幕宽度 /// </summary> private int screenWidth; /// <summary> /// 当前屏幕高度 /// </summary> private int screenHeight; //时间计数器 private int frameTime; public Texture2D buttonTexture; #region TextField private string userName; private string pwd; private string message; #endregion #region ToolBar //工具栏选择按钮的ID private int sltID; //工具栏显示按钮的字符串 private string[] barResource; //选择按钮是否被按下 private bool sltToggle0, sltToggle1; #endregion #region 5、Slider //定义成公共的,否则滚动条无法拖动 public float verticalValue = 0.0f;//垂直、纵向滑动条【ˈvə:tikəl] public float horizontalValue = 0.0f;//横向滑动条 [ˌhɔriˈzɔntəl] #endregion #region 6 ScrollView public Vector2 scrollPostion2; #endregion #region 7 GroupView //贴图 public Texture2D texture1; public Texture2D texture2; #endregion #region 8窗口 //默认窗口位置 Rect window1 = new Rect(20, 20, 200, 200); Rect window2 = new Rect(260, 20, 200, 200); #endregion #region 9GUISkin public GUISkin guiSkin;//自定义皮肤 private bool isSelect = false;//单选控件是否被选中 public Rect rect = new Rect(20, 20, 120, 50);//拖动窗口的位置 public string guiString = "请输入文字"; #endregion // Use this for initialization /// <summary> /// 该方法只执行一次,所以需要将初始化的相关代码都放在Start()方法中 /// </summary> void Start() { ////得到屏幕宽高 screenWidth = Screen.width; screenHeight = Screen.height; ////得到图片宽高 imageHeight = imageTexture.height; imageWidth = imageTexture.width; str = "请您点击按钮"; #region TextField userName = "请输入您的姓名"; pwd = "请输入密码"; message = "请输入正确的用户名及密码!"; #endregion #region ToolBar sltID = 0; barResource = new string[] { "第一个工具栏", "第二个工具栏", "第三个工具栏", "第四个工具栏" }; sltToggle0 = false; sltToggle1 = false; #endregion #region 6 ScrollView //初始化滚动条位置 scrollPostion2 = new Vector2(50, 50); #endregion } // Update is called once per frame void Update() { } /// <summary> /// 界面绘制方法,所有GUI的绘制都需要在这个方法中实现 /// </summary> private void OnGUI() { //将文字内容显示在屏幕中 //GUI.Label(new Rect(100, 10, 100, 30), str); //GUI.Label(new Rect(100, 40, 100, 30), "当前屏幕宽:" + screenWidth); //GUI.Label(new Rect(100, 70, 100, 30), "当前屏幕高:" + screenHeight); ////将贴图显示在屏幕中 //GUI.Label(new Rect(100, 100, imageWidth, imageHeight), imageTexture); #region Button //if (GUI.Button(new Rect(10, 50, buttonTexture.width, buttonTexture.height), buttonTexture)) //{ // //点击按钮修改提示信息 // str = "您点击了图片按钮"; //} ////设置按钮中文字的颜色 //GUI.color = Color.blue; ////设置按钮的背景色 //GUI.backgroundColor = Color.red; //if (GUI.Button(new Rect(10, 200, 70, 30), "文字按钮")) //{ // //点击按钮修改提示信息 // str = "您点击了文字按钮"; //} //GUI.color = Color.yellow; ////设置按钮的背景色 //GUI.backgroundColor = Color.white; //if (GUI.RepeatButton(new Rect(10, 250, 100, 30), "按钮按下中")) //{ // //点击按钮修改提示信息 // str = "按钮按下中的时间:" + frameTime; // frameTime++; //} #endregion #region TextField //GUI.Label(new Rect(10,10,Screen.width,40),message ); //if (GUI.Button(new Rect(10,120,100,50),"登录" )) //{ // message = "您输入的用户名为:" + userName + ";您输入的密码为:" + pwd; //} //GUI.Label(new Rect(10,40,50,30),"用户名:" ); //GUI.Label(new Rect(10,80,50,30),"密 码:" ); //GUI.TextField(new Rect(70, 40, 200, 30), userName, 10); //GUI.PasswordField(new Rect(70, 80, 200, 30), pwd , '*' ,12); #endregion #region ToolBar //var oldSltID = sltID; ////重新计算本次工具栏选择的ID //sltID = GUI.Toolbar(new Rect(10, 10, barResource.Length*100, 30), sltID, barResource);//默认选择哪个 ////如果两次选择的是不同的工具栏,将选择按钮全部释放掉 //if (oldSltID!=sltID) //{ // sltToggle0 = false; // sltToggle1 = false; //} ////根据工具栏选择的ID显示不同的信息 //switch (sltID) //{ // case 0: // sltToggle0 = GUI.Toggle(new Rect(10, 50, 150, 30), sltToggle0, "第一个工具栏单项选择——1"); // sltToggle0 = true;//是否选中 // sltToggle1 = GUI.Toggle(new Rect(10, 80, 150, 30), sltToggle1, "第一个工具栏单项选择——2"); // break; // case 1: // sltToggle0 = GUI.Toggle(new Rect(10, 50, 150, 30), sltToggle0, "第二个工具栏单项选择——1"); // sltToggle1 = GUI.Toggle(new Rect(10, 80, 150, 30), sltToggle1, "第二个工具栏单项选择——2"); // break; // case 2: // sltToggle0 = GUI.Toggle(new Rect(10, 50, 150, 30), sltToggle0, "第三个工具栏单项选择——1"); // sltToggle1 = GUI.Toggle(new Rect(10, 80, 150, 30), sltToggle1, "第三个工具栏单项选择——2"); // break; // case 3: // sltToggle0 = GUI.Toggle(new Rect(10, 50, 150, 30), sltToggle0, "第四个工具栏单项选择——1"); // sltToggle1 = GUI.Toggle(new Rect(10, 80, 150, 30), sltToggle1, "第四个工具栏单项选择——2"); // break; //} #endregion #region 5 Slider //verticalValue = GUI.VerticalSlider(new Rect(25, 25, 30, 100), verticalValue, 100, 0);//计算滑动进度 //horizontalValue = GUI.HorizontalSlider(new Rect(50, 25, 100, 30), horizontalValue, 0.0f, 100.0f); //GUI.Label(new Rect(10, 150, Screen.width, 30), "纵向滑动条当前进度:" + verticalValue + "%"); //GUI.Label(new Rect(10, 180, Screen.width, 30), "横向滑动条当前进度向滑动条当前进度:" + horizontalValue + "%"); #endregion #region 6 ScrollView ////开始滚动视图 //Vector2 vector2 = GUI.BeginScrollView(new Rect(0, 0, 200, 200), scrollPostion2, new Rect(0, 0, Screen.width, 300), true, true); //GUI.Label(new Rect(100,40,Screen.width,30),"测试滚动视图,测试滚动视图,测试滚动视图,测试滚动视图。" ); ////结束滚动视图 //GUI.EndScrollView(); #endregion #region 7GroupView ////开始这个群组 //GUI.BeginGroup(new Rect(10, 50, 200, 400));//创建一个群组视图,但是必须以GUI.EndGroup()方法结束群组视图 ////显示贴图,坐标为相对群组的点(10,50)的坐标 //GUI.DrawTexture(new Rect(10,20,texture1.width,texture1.height),texture1 ); ////标签提示信息 //GUI.Label(new Rect(10, 150, 100, 40), "群组视图1"); ////按钮 //GUI.Button(new Rect(10, 190, 100, 40), "按钮1"); ////结束这个群组 //GUI.EndGroup(); ////开始第二个群组 同上 //GUI.BeginGroup(new Rect(300,0,500,400)); //GUI.DrawTexture(new Rect(10,20,texture2.width,texture2.height),texture2 ); //GUI.Label(new Rect(10, 150, 100, 40), "群组视图2"); //GUI.Button(new Rect(10, 190, 100, 40), "按钮2"); //GUI.EndGroup(); #endregion #region 8窗口 //GUI.Window(1, window1, OneWindow, "我是第一个窗口"); //GUI.Window(2, window2, TwoWindow, "我是第二个窗口"); #endregion #region 9GUISkin GUI.skin = guiSkin;//设置GUI皮肤为自定义皮肤 GUI.Button(new Rect(100, 100, 100, 100), "自定义按钮"); isSelect = GUI.Toggle(new Rect(10, 50, 100, 30), isSelect, "单选按钮");////单项选择 guiString = GUI.TextField(new Rect(200, 10, 200, 20), guiString, 100);//输入框 rect = GUI.Window(111, rect, GuiWindow, "GUI窗口");//注册窗口 #endregion } /// <summary> /// 窗口1 /// </summary> /// <param name="id"></param> private void OneWindow(int id) { GUI.Box(new Rect(10, 50, 150, 50), "这个窗口的ID是:" + id); if (GUI.Button(new Rect(10, 120, 150, 50), "普通按钮1")) { Debug.Log("窗口ID = " + id + "按钮被点击"); } } /// <summary> /// 窗口2 /// </summary> /// <param name="id"></param> private void TwoWindow(int id) { GUI.Box(new Rect(10, 50, 150, 50), "这个窗口的ID是:" + id); if (GUI.Button(new Rect(10,120,150,50),"普通按钮2" )) { Debug.Log("窗口ID = " + id + "按钮被点击"); } } /// <summary> /// 9GUI窗口 /// </summary> /// <param name="id"></param> private void GuiWindow(int id) { GUI.DragWindow();//创建一个可以自由拖动的窗口 GUI.Button(new Rect(10, 10, 100, 30), "拖动的窗口按钮"); } }