Unity3D笔记六 GUI游戏界面
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游戏界面的更多相关文章
- 《MFC游戏开发》笔记六 图像双缓冲技术:实现一个流畅的动画
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9334121 作者:七十一雾央 新浪微博:http:/ ...
- java之jvm学习笔记六-十二(实践写自己的安全管理器)(jar包的代码认证和签名) (实践对jar包的代码签名) (策略文件)(策略和保护域) (访问控制器) (访问控制器的栈校验机制) (jvm基本结构)
java之jvm学习笔记六(实践写自己的安全管理器) 安全管理器SecurityManager里设计的内容实在是非常的庞大,它的核心方法就是checkPerssiom这个方法里又调用 AccessCo ...
- Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- Python学习笔记六
Python课堂笔记六 常用模块已经可以在单位实际项目中使用,可以实现运维自动化.无需手工备份文件,数据库,拷贝,压缩. 常用模块 time模块 time.time time.localtime ti ...
- Typescript 学习笔记六:接口
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- Django开发笔记六
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.登录功能完善 登录成功应该是重定向到首页,而不是转发 ...
- python3.4学习笔记(六) 常用快捷键使用技巧,持续更新
python3.4学习笔记(六) 常用快捷键使用技巧,持续更新 安装IDLE后鼠标右键点击*.py 文件,可以看到Edit with IDLE 选择这个可以直接打开编辑器.IDLE默认不能显示行号,使 ...
- Go语言学习笔记六: 循环语句
Go语言学习笔记六: 循环语句 今天学了一个格式化代码的命令:gofmt -w chapter6.go for循环 for循环有3种形式: for init; condition; increment ...
- 【opencv学习笔记六】图像的ROI区域选择与复制
图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...
随机推荐
- windows 搭建 subversion+TortoiseSVN
1.版本 (a)Apache 2.2.25:httpd-2.2.25-win32-x86-no_ssl.msi (b)Subversion:Setup-Subversion-1.8.5.msi (c) ...
- table获取checkbox是否选中的几种方法
function test() { $(".table tbody tr").find("td:first input:checkbox").each(func ...
- 15款最好的 jQuery 网格布局插件
如今,大多数网站设计要靠网格系统和布局,这能够提供给设计人员一个方便的途径来组织网页上的内容.网格的设计最常见于报纸和杂志的版面,由文字和图像构成的列组成. 这篇文章给大家分享精心挑选的15款最佳的 ...
- 关于Cocos2d-x程序运行时候提示关闭程序的框框的解决方法
1.这个情况是资源没有被加载的表现 如果AppDelegate.cpp里面没有文件索引的语句 FileUtils::getInstance()->addSearchPath("res& ...
- Ubuntu之命令壁纸
- 【转】7Z命令行解压缩
7z.exe在CMD窗口的使用说明如下: 7-Zip (A) 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Usage: 7za <co ...
- 下面属于javascript对象的有:( )
下面属于javascript对象的有:( ) A. Window B. Document C. Form D. String E. Navigator 解答:ACE
- 使用 const 提高函数的健壮性
使用 const 提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作 ...
- Swing组件都采用MVC设计模式
Swing组件都采用MVC(Model-View-Controller,既模型-视图-控制器)设计模式,从而可以实现GUI组件的显示逻辑和数据逻辑的分离,允许程序员自定义Render来改变GUI组件的 ...
- Javascript农历与公历相互转换
/**用法 * Lunar.toSolar(2016, 6, 3); 农历转化公历 * Lunar.toLunar(2016, 7, 6); 公历转化农历 */ var Lunar = { MIN_Y ...