码迷,mamicode.com
首页 > 编程语言 > 详细

Unity脚本——02UnityGUI

时间:2015-11-12 11:20:40      阅读:483      评论:0      收藏:0      [点我收藏+]

标签:

学习笔记适合新手,如有错误请指正。?号处也请各位指点下,谢谢。

UnityGUI使用一个特殊的OnGUI()函数

它一共有两种类型的接口:GUI.xxx()和GUILayout.XXX()

第一种需要自己手动填写处于屏幕上的位置

第二种unity会为我们自动排版,我们只需要关系内容即可

无论摄像机拍到的图像时怎么变的,GUI永远是显示在屏幕上,不受 变形、碰撞、光照的影响。
lGUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”); 只读标签:GUILayout.Label()

l修改控件的颜色:GUI.backgroundColor = Color.red;设置背景色,GUI.color设置前景色,影响OnGUI中之后的控件直到下次修改颜色为止。
 lHierarchy中的游戏对象不一样,OnGUI是每帧擦除重绘的(有可能一帧调用多次)。GUILayout.Button(“Hello”)应该理解为“画一个Button控件”而不是“创建一个Button控件”:
•if(tick%100>50)//每50帧画一次Buton
•{
•  GUILayout.Button("Hello");
•}
•tick++;

因此,TextBox的输入要成员变量保存当前的值,否则输不进去。 GUILayout.TextField(“yzk”) ,参数为要显示的值,返回值为用户输入的值。 username = GUILayout.TextField(username
按钮的点击 

l响应按钮点击:GUI中没有事件概念,鼠标点击了按钮Button返回值就是true,例如:
•  if(GUILayout.Button("Test"))
•  {
•  Camera.mainCamera.transform.Translate(Vector3.back);
•  }
l思考下面的代码有什么问题,怎么解决:
•  if(GUILayout.Button("Test"))
•  {
•  GUILayout.Label("Clicked Test");
•  }

l案例:实现登陆功能,显示登陆结果。演练一下。常见错误:OnGUI大小写;文件编码;运行提示“Compiler Error”  
GUILayout布局

lGUILayout布局默认会伸展控件的尺寸。Button等控件支持params GUILayoutOption[] options可变参数数组,可以通过GUILayout.Width(30)返回一个设置控件宽度的GUILayoutOption对象, Height()、 MinWidth()、MinHeight()等同理。
例子:GUILayout.Button("Test",GUILayout.Width(500),GUILayout.Height(30))
lGUILayout采用线性布局,类似于StackPanel,默认是纵向布局。通过GUILayout.BeginHorizontal();开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical()。

l如果嫌控件太挤,可以使用GUILayout.Space(30);增加若干像素的间隙。 
技术分享   

 

常用GUI控件

  • 滑动条:纵向, sliderValue = GUILayout.VerticalSlider(sliderValue,0,100);返回值为当前值,第二个参数为最小值,第二个为最大值。 HorizontalSlider()横向
  • 区域Area,相当于一个控件的盒子, Area中的控件跟着Area移动, BeginArea()开始一个区域,参数指定区域的大小和坐标, EndArea()结束区域;
  • 窗口,区域是没有边框和标题的,也不可以拖放。 GUILayout.Window(0, new Rect(50,50,200,200),AddWindow1,“我的窗口”);  第一个参数为窗口的编号,第二个为窗口大小,第三个为void WindowFunction(int windowId)委托,用来绘制窗口内容。
  • 窗口拖拽,在WindowFunction的最后调用GUI.DragWindow()可以启用全屏拖放(给DragWindow传Rect参数可以设定可拖放的区域)。考虑帧刷新的问题,要在OnGUI把Window()的返回Rect保存才可以可拖动,Start()中设定初始位置。
  • 密码框:pwd = GUILayout.PasswordField(pwd,‘*’),第二个参数为掩码字符,注意帧刷新的问题。 
  • Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下期间会一直返回true。案例:Button和RepeatButton实现游戏对象移动。
  • Tab页: electedToolBarId = GUILayout.Toolbar(selectedToolBarId,newstring[]{“装备”,“经验”,“队友”});  返回值为激活的按钮的序号。
  • 复选框:isMuted = GUILayout.Toggle(isMuted,“静音”);
  • 多行文本区: msgBody =GUILayout.TextArea(msgBody,GUILayout.Width(300),GUILayout.Height(300)); 

gui总结

技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享技术分享

Unity脚本——02UnityGUI

标签:

原文地址:http://www.cnblogs.com/kubll/p/4958218.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!