Unity教程:GUI 界面开发

简介: UI概述:UI永远是显示在屏幕的最前面上,不受变形、碰撞、光照的影响GUI概述:GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。

UI概述:

UI永远是显示在屏幕的最前面上,不受变形、碰撞、光照的影响
GUI概述:
GUI是Graphical User Interface的缩写。Unity的图形界面系统能容易和快速创建出各种交互界面。与传统的方法:创建GUI对象,标出位置,再写对应的事件函数不同,只需要用很少的代码,就可以把这些工作搞定。原理是内置的控制元素,可以把创建实例,标出位置与对应函数一次搞定。例如:
void OnGUI()
{
if(GUI.Button(new Rect(10,10,150,100),"I am a button"))
{
print("You clicked the button!");
}
}
游戏界面是游戏作品中不可或缺的部分,它可以为游戏提供导航,也可以为游戏内容提供重要的信息,同时也是美化游戏的一个重要手段。Unity内置了一套完整地GUI系统,提供了从布局、控件到皮肤的一整套GUI解决方案,可以做出各种风格和样式的GUI界面。目前Unity没有提供内置的GUI可视化编辑器,因此GUI界面的制作需要全部通过编写脚本代码来实现。
GUI基础:
GUI的代码需要写在OnGUI()这个函数里。就像把每帧要执行的代码写在Update()这个函数里一样。
GUI基本控件:
因为OnGUI()函数每祯都执行,不需要另外再去创建或销毁GUI控制元素。如果要在某一情况下显示而在另一情况下不显示GUI,就需要用另外的逻辑去实现。
Position 位置 :
位置这个参数一般用RECT()这个函数来指明。它定义了X坐标,Y坐标,宽度,高度.以像素为单位的绝对坐标来计算.通过Screen.width and Screen.height这两个属性可以得到屏幕尺寸,以此通过计算来设置位置.以适应不同分辨率的电脑。
方法OnGUI():GUI部分是每“帧”擦除重绘的,只应该在OnGUI中
绘制GUI:
标签:void GUILayout.Label(string)
文本输入域:stringGUILayout.TextField(string);
多行文本框: msgBody=GUILayout.TextArea(msgBody);
密码框:stringGUILayout.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等控件支持paramsGUILayoutOption[]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后再添加。

更多unity2018的功能介绍请到paws3d学习中心查找。

相关文章
|
JavaScript 前端开发 程序员
用Unity不会几个插件怎么能行?Unity各类插件及教程推荐
话说工欲善其事必先利其器,程序员总是有一些开发利器,而对于Unity3D开发程序员来说,插件就是非常好用的利器。 今天博主,就将比较好用的插件推荐给大家,希望一起学习品鉴。
|
XML 编解码 编译器
Unity跨平台UI解决方案:可能是最全的FairyGUI系列教程-第八天
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
1483 0
|
4月前
|
数据可视化 C# 图形学
【Unity 3D】图形界面GUI的讲解及在C#中实现用户登录界面的实战(附源码)
【Unity 3D】图形界面GUI的讲解及在C#中实现用户登录界面的实战(附源码)
64 0
|
8月前
|
持续交付 图形学 开发者
【Unity实战系列】Unity的下载安装以及汉化教程
【Unity实战系列】Unity的下载安装以及汉化教程
212 0
|
8月前
|
数据可视化 C# 图形学
【unity造轮子】Unity ShaderGraph使用教程与各种特效案例
点关注不迷路,持续输出干货文章。 嗨,大家好,我是向宇。最近在玩ShaderGraph,决定把我自己实验的所有效果记录到这篇博客中,附带完整高清的连线动态图,希望对想要学习ShaderGraph的同学有所启发。后续有发现一些新的ShaderGraph我还会继续进行更新。
|
10月前
|
API 图形学
【unity专题篇】—GUI(IMGUI)思维导图详解
【unity专题篇】—GUI(IMGUI)思维导图详解
204 0
|
存储 负载均衡 安全
【Unity干货教程】如何实现Unity和Android原生互相调用?
Unity是一个跨平台开发工具,发布到移动平台也是大部分Unity开发者的必备技能。而由于Unity跨平台的特性,总会遇到在移动平台的技术细节支持不够,或者需要在调用其他原生插件的情况。这里我们说一下如何在Android Studio中创建一个可供Unity调用的aar插件,以实现Unity和Android原生互相调用的目的。
|
图形学 Windows
很好用的Unity编辑器扩展工具 Odin Inspector教程
Odin包含许多功能,例如Static Inspector,Project Validation,Odin Editor Windows和我们的开源Odin Serializer,它允许您在需要多态对象结构时扩展Unity的序列化功能,或者希望在运行时序列化和反序列化数据。
很好用的Unity编辑器扩展工具 Odin Inspector教程
|
图形学
Unity3D教程:回合制游戏实现
一、场景布置 首先是简单的场景布置,在3D部分很简单。就几个简单的基本组件,在一个Plane上面放2个Cube,并且上不同颜色的纯色Material。唯一需要大家注意的是,请将两个Cube改好名,以免到时候编程不知道哪个跟哪个。
1636 0
|
API 图形学 Android开发
Unity跨平台UI解决方案:可能是最全的FairyGUI系列教程-第七天
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
917 0