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. .net提供的5种request-response方法一

    .net提供了三种基本方法和两种底层方法来发送http请求和接收http响应,通过这些方法,我们可以模仿在浏览器地址栏输入URL地址访问网页的方法.我们发送http请求,接收服务器返回的响应(通常就是 ...

  2. 关于Struts2的jsp页面的注释

    语句就算用<!-- -->注释后,还是会在编译的时候显示在网页上,而且网页还会报错,因为注释的那些语句也会去编译,也会去检查有没有错误,所以一些注释掉的过时的变量和方法也会导致报错.500

  3. linux ad7606 驱动解读

    本文记录阅读linux ad7606驱动的笔记. 主要文件 drivers/staging/iio/adc/ad7606_spi.c drivers/staging/iio/adc/ad7606_co ...

  4. map正序、逆序排序

    一.按 key 排序 1.map顺序排序(小的在前,大的在后): map<float,string,less<float> > m_aSort;//已float从小到大排序 2 ...

  5. jvm虚拟机原理1

    JVM是虚拟机,也是一种规范,他遵循着冯·诺依曼体系结构的设计原理.冯·诺依曼体系结构中,指出计算机处理的数据和指令都是二进制数,采用存储程序方式不加区分的存储在同一个存储器里,并且顺序执行,指令由操 ...

  6. ffmpeg h264+ts +(sdl)显示方式

    网友: 明月惊鹊(357161826) 2014-1-16 10:07:00ffmpeg + sdl一米阳光(740053660) 2014-1-16 10:08:29Simple DirectMed ...

  7. ubuntu下android源码的下载(最新)

    在ubuntu下下载android源码我断断续续搞了好几个月,希望大家不要向我学习啊!一次性搞定! 这里给大家一些建议啊,如果是看书的话看下书的出版日期,超过一年的基本上失效,网上的也是,特别是在国内 ...

  8. 快速找出System.Management.Automation.dll,c#调用powershell

    public static void InvokeSystemPS(string cmd) { List<string> ps = new List<string>(); ps ...

  9. 【Java面试题】3 Java的"=="和equals方法究竟有什么区别?简单解释,很清楚

    ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符. 如果一个变量指向的数据是对象类型的 ...

  10. js 文件下载

    工程WebApi: 点击按钮执行的handler exportClick() { var profile = { content: this.state.profile, type: MappingT ...