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(, , , );
Rect window2 = new Rect(, , , );
#endregion #region 9GUISkin
public GUISkin guiSkin;//自定义皮肤
private bool isSelect = false;//单选控件是否被选中
public Rect rect = new Rect(, , , );//拖动窗口的位置
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 = ;
barResource = new string[] { "第一个工具栏", "第二个工具栏", "第三个工具栏", "第四个工具栏" };
sltToggle0 = false;
sltToggle1 = false; #endregion #region 6 ScrollView
//初始化滚动条位置
scrollPostion2 = new Vector2(, );
#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(, , , ), "自定义按钮");
isSelect = GUI.Toggle(new Rect(, , , ), isSelect, "单选按钮");////单项选择
guiString = GUI.TextField(new Rect(, , , ), guiString, );//输入框
rect = GUI.Window(, rect, GuiWindow, "GUI窗口");//注册窗口 #endregion
}
/// <summary>
/// 窗口1
/// </summary>
/// <param name="id"></param>
private void OneWindow(int id)
{
GUI.Box(new Rect(, , , ), "这个窗口的ID是:" + id);
if (GUI.Button(new Rect(, , , ), "普通按钮1"))
{
Debug.Log("窗口ID = " + id + "按钮被点击");
}
}
/// <summary>
/// 窗口2
/// </summary>
/// <param name="id"></param>
private void TwoWindow(int id)
{
GUI.Box(new Rect(, , , ), "这个窗口的ID是:" + id);
if (GUI.Button(new Rect(,,,),"普通按钮2" ))
{
Debug.Log("窗口ID = " + id + "按钮被点击");
}
}
/// <summary>
/// 9GUI窗口
/// </summary>
/// <param name="id"></param>
private void GuiWindow(int id)
{
GUI.DragWindow();//创建一个可以自由拖动的窗口
GUI.Button(new Rect(, , , ), "拖动的窗口按钮");
}
}

Unity3D笔记六 GUI游戏界面的更多相关文章

  1. 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9334121 作者:七十一雾央 新浪微博:http:/ ...

  2. java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)

    java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...

  3. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  4. Python学习笔记六

    Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...

  5. Typescript 学习笔记六:接口

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  6. Django开发笔记六

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...

  7. python3.4学习笔记(六) 常用快捷键使用技巧,持续更新

    python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...

  8. Go语言学习笔记六: 循环语句

    Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...

  9. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

随机推荐

  1. zipkin使用mysql保存数据

    zipkin和mysql结合保存zipkin在项目监控中得到的所有数据. <dependency> <groupId>io.zipkin.java</groupId> ...

  2. mysql编译安装后各种常见错误集锦

    1.ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', sys ...

  3. kcp协议详解

    kcp协议是传输层的一个具有可靠性的传输层ARQ协议.它的设计是为了解决在网络拥堵情况下tcp协议的网络速度慢的问题.kcp力求在保证可靠性的情况下提高传输速度.kcp协议的关注点主要在控制数据的可靠 ...

  4. 软件测试工具MonkeyTalk使用方法

    1.简单介绍 MonkeyTalk软件测试工具由两部分构成:MonkeyTalk IDE 和 MonkeyTalk Agents MonkeyTalk IDE是Eclipse平台的工具,工能是:对iO ...

  5. Mastering the game of Go with deep neural networks and tree search浅析

    Silver, David, et al. "Mastering the game of Go with deep neural networks and tree search." ...

  6. C# HttpRequest基础连接已经关闭: 接收时发生意外错误

    在c#中使用HttpWebRequest时,频繁请求一个网址时,过段时间就会出现“基础连接已经关闭: 接收时发生意外错误”的错误提示. 将webRequest的属性设置成下面的,经测试可以解决. we ...

  7. 关于VS2012连接MySql数据库时无法选择数据源

    您的C#开发工具是用VS2012吗?    No! return;    您的数据库用的是MySql吗?     No! return;    您新建ADO.NET数据实体模型的时候选择数据源的时候没 ...

  8. Uniprot 数据库-最常用的蛋白质数据库

    Uniprot 数据库是收录信息最全面的蛋白质数据库,包含swissport, uniparc, TrEMBL 3个子数据库: 其中swiss-prot 是手工核对过的 ,非冗余, 有详细注释信息的蛋 ...

  9. php jquery pjax示例源码 (ajax请求,并改变url)

    下载地址: http://files.cnblogs.com/files/gaocong/jquery_pjax.rar

  10. xshell-常用指令汇总 linux 常用指令

    suse linux 常用命令  (1)命令ls——列出文件  ls -la 给出当前目录下所有文件的一个长列表,包括以句点开头的“隐藏”文件  ls a* 列出当前目录下以字母a开头的所有文件  l ...