Unity3D笔记第三天——GUI
2015-09-12 16:39
381 查看
GUI:
GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。与传统的方法:创建GUI对象,标出位置,再写对应的事件函数不同,只需要用很少的代码,就可以把这些工作搞定。原理是内置的控制元素,可以把创建实例,标出位置与对应函数一次搞定。
例如:
游戏界面是游戏作品中不可或缺的部分,它可以为游戏提供导航,也可以为游戏内容提供重要的信息,同时也是美化游戏的一个重要手段。Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现。
因为OnGUI()函数每祯都执行,不需要另外再去创建或销毁GUI控制元素。如果要在某一情况下显示而在另一情况下不显示GUI,就需要用另外的逻辑去实现。(每祯都创建新的GUI元素,个人不推荐用GUI)
绘制GUI:
方法OnGUI():GUI部分是每“帧”擦除重绘的,只应该在OnGUI中
标签: void GUILayout. Label(string)
文本输入域: string GUILayout.TextField(string);
多行文本框: msgBody = GUILayout.TextArea(msgBody);
密码框: string GUILayout.PasswordField(pwd,„*‟),第二个参数为掩码字符。
按钮: Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下期间会一直返回true。
典型基本控件(续)
Tab页: selectedToolBarId =GUILayout.Toolbar(selectedToolBarId,new string[]{“装备”,“经验”,“队友”}); 返回值为点击的按钮的序号;
复选框:isMuted = GUILayout.Toggle(isMuted,“静音”);
多行文本框: msgBody = GUILayout.TextArea(msgBody);
GUILayout
GUILayout布局默认会伸展控件的尺寸。Button等控件支持params
GUILayoutOption[]options可变参数数组,可以通过GUILayout.Width(100)返回一个
设置控件宽度的GUILayoutOption对象, Height()、 MinWidth()、MinHeight()等同理。
例子:GUILayout.Button("Test",GUILayout.Width(500),GUILayout.Height(30))
GUILayout采用线性布局,类似于StackPanel,默认是纵向布局。
通过GUILayout.BeginHorizontal();开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical() 如果嫌控件太挤,可以使GUILayout.Space(30);增加若干像素的间隙。
GUISkin 皮肤
首先在Project中Create→GUI Skin,选中创建的GUISkin文件,在Inspector中修改每种控件的样式。
编写一个脚本,脚本中定义一个GUISkin类型的属性:
public GUISkin MySkin;
OnGUI中加载样式:
GUI.skin = MySkin;
GUILayout.Button(“确定");
GUILayout.Button(“取消");
选中脚本所拖的的模型,把GUISkin文件拖到MySkin属性上。这样所有按钮都是这样的风格GUI.Skin.GetStyle(“”)。
注意:如果没有效果,就把脚本remove后再添加。
附:登录界面代码
相关知识点:
Gui的位置及大小用Rect来控制。
位置这个参数一般用RECT()这个函数来指明。它定义了X坐标,Y坐标,宽度,高度.以像素为单位的绝对坐标来计算. 通过Screen.width and Screen.height这两个属性可以得到屏幕尺寸,以此通过计算来设置位置.以适应不同分辨率的电脑。
GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。与传统的方法:创建GUI对象,标出位置,再写对应的事件函数不同,只需要用很少的代码,就可以把这些工作搞定。原理是内置的控制元素,可以把创建实例,标出位置与对应函数一次搞定。
例如:
void OnGUI() { GUI.Label (new Rect (20,20,100,30),"登陆成功"); if (GUI.Button (new Rect (20, 80, 80, 80), "返回")) { Application.LoadLevel(0);//加载索引值为0的场景 } }
游戏界面是游戏作品中不可或缺的部分,它可以为游戏提供导航,也可以为游戏内容提供重要的信息,同时也是美化游戏的一个重要手段。Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现。
因为OnGUI()函数每祯都执行,不需要另外再去创建或销毁GUI控制元素。如果要在某一情况下显示而在另一情况下不显示GUI,就需要用另外的逻辑去实现。(每祯都创建新的GUI元素,个人不推荐用GUI)
绘制GUI:
方法OnGUI():GUI部分是每“帧”擦除重绘的,只应该在OnGUI中
标签: void GUILayout. Label(string)
文本输入域: string GUILayout.TextField(string);
多行文本框: msgBody = GUILayout.TextArea(msgBody);
密码框: string GUILayout.PasswordField(pwd,„*‟),第二个参数为掩码字符。
按钮: Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下期间会一直返回true。
典型基本控件(续)
Tab页: selectedToolBarId =GUILayout.Toolbar(selectedToolBarId,new string[]{“装备”,“经验”,“队友”}); 返回值为点击的按钮的序号;
复选框:isMuted = GUILayout.Toggle(isMuted,“静音”);
多行文本框: msgBody = GUILayout.TextArea(msgBody);
GUILayout
GUILayout布局默认会伸展控件的尺寸。Button等控件支持params
GUILayoutOption[]options可变参数数组,可以通过GUILayout.Width(100)返回一个
设置控件宽度的GUILayoutOption对象, Height()、 MinWidth()、MinHeight()等同理。
例子:GUILayout.Button("Test",GUILayout.Width(500),GUILayout.Height(30))
GUILayout采用线性布局,类似于StackPanel,默认是纵向布局。
通过GUILayout.BeginHorizontal();开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical() 如果嫌控件太挤,可以使GUILayout.Space(30);增加若干像素的间隙。
GUISkin 皮肤
首先在Project中Create→GUI Skin,选中创建的GUISkin文件,在Inspector中修改每种控件的样式。
编写一个脚本,脚本中定义一个GUISkin类型的属性:
public GUISkin MySkin;
OnGUI中加载样式:
GUI.skin = MySkin;
GUILayout.Button(“确定");
GUILayout.Button(“取消");
选中脚本所拖的的模型,把GUISkin文件拖到MySkin属性上。这样所有按钮都是这样的风格GUI.Skin.GetStyle(“”)。
注意:如果没有效果,就把脚本remove后再添加。
附:登录界面代码
void OnGUI() { GUI.skin = mySkin; istoggle_username = GUI.Toggle (new Rect (Screen.width / 2 - 100, Screen.height / 2 + 50, 150, 30), istoggle_username,"记住用户名"); istoggle_password = GUI.Toggle(new Rect (Screen.width/2+50, Screen.height/2+50, 150,30),istoggle_password,"记住密码"); GUI.Label (new Rect (Screen.width / 2 - 100, Screen.height / 2 - 100, 100, 30), "用户名:","username"); GUI.Label (new Rect (Screen.width / 2 - 100, Screen.height / 2 - 50, 100, 30), "密码:","username"); //单行文本 // username = GUI.TextField (new Rect (Screen.width / 2 + 10, Screen.height / 2 - 100, 100, 30), username); //多行文本区域 username = GUI.TextArea (new Rect (Screen.width / 2 + 10, Screen.height / 2 - 100, 100, 30), username,"username"); password = GUI.PasswordField (new Rect (Screen.width / 2 + 10, Screen.height / 2 - 50, 100, 30), password, '*',"username"); if(username != "" || password != "") { isLoginFailed = false; } if (GUI.Button (new Rect (Screen.width / 2, Screen.height / 2, 50, 50), "登录")) { if (username == "admin" && password == "123456") { Application.LoadLevel(1); } else { isLoginFailed = true; } } if(isLoginFailed == true) { GUI.color = Color.red; GUI.Label(new Rect (Screen.width/2,Screen.height/2+100 , 200 ,50),"用户名或者密码错误,请重新输入!!!"); username = ""; password = ""; } }
相关知识点:
Gui的位置及大小用Rect来控制。
位置这个参数一般用RECT()这个函数来指明。它定义了X坐标,Y坐标,宽度,高度.以像素为单位的绝对坐标来计算. 通过Screen.width and Screen.height这两个属性可以得到屏幕尺寸,以此通过计算来设置位置.以适应不同分辨率的电脑。
相关文章推荐
- 鼠标右键点击文件夹 用Unity5打开 项目 实现
- Unity5 新功能解析--GI(全局光)
- Unity3D笔记第二天——脚本
- Unity3D笔记第一天——资源、项目
- 社区发现 Community Detection
- IOS上 Unity4.x 键盘输入上面的InputView会不显示 BUG
- Unity3D主程修炼之路
- unity调用android原生接口
- Unity3D简单电影视图编辑
- Unity5 Sprite 图集打包 AssetBundle 更新探索
- 【马马虎虎系列】Unity的attributes大集合(1)
- 【Unity】Shader编程 基础总结
- [Unity3D]关于U3D贴图格式压缩
- Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质
- Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质
- Unity时钟定时器插件
- Unity修改Particles Render Material(Unity3D开发之二十三)
- Unity修改Particles Render Material(Unity3D开发之二十三)
- 记一次基于Unity的Profiler性能分析
- unity5在mx4下crash