Unity教程:GUI界⾯开发
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 ⽪肤:
unity 教程
⾸先在Project中Create→GUI Skin,选中创建的GUISkin⽂件,在Inspector中修改每种控件的样式。
编写⼀个脚本,脚本中定义⼀个GUISkin类型的属性:
public GUISkin MySkin;
OnGUI中加载样式:
GUI.skin=MySkin;
GUILayout.Button(“确定");
GUILayout.Button(“取消");
选中脚本所拖的的模型,把GUISkin⽂件拖到MySkin属性上。这样所有按钮都是这样的风格GUI.Skin.GetStyle(“”)。
注意:如果没有效果,就把脚本remove后再添加。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论