Unity3D基础--常用的GUI控件

Unity3D中的GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,每一次在OnGUI方法中声明的变量值都不会保存下来,例如,在Unity中画一个文本编辑框可以调用如下代码:GUILayout.TextField("text");但是运行后会发现,不论我们输入什么都还是只会显示text字符串。这是因为:我们在上一帧中输入的字符串没有被保存,在下一帧中会全部擦除重绘,即重新绘制一个"text"字符串。解决方法:我们可以在该类的成员变量中保存下来输入值,在Start方法中进行初始化
text = GUILayout.TextField(text);接下来介绍几个比较常用的控件。

1.按钮:GUILayout.Button("Hello");该方法返回一个布尔类型值,只有在按下Button抬起的时候返回true,在按下的过程中仍然返回false。

2.重复按钮:GUILayout.RepeatButton("Hello");与Button不同的时,该方法只要是我们按下Button期间会一直返回true,适合做子弹反射按钮。

3.密码框:pwd = GUILayout.PasswordField(pwd,‘*’),第二个参数为掩码字符。

4.Tab页: selectedToolBarId = GUILayout.Toolbar(selectedToolBarId,new string[]{“Tab1”,“Tab2”,“Tab3”}); 返回值为激活的按钮的序号。根据得到标签序号,我们可以绘制相应的Tab页。

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

	private int selectedToolBarId;
	// Use this for initialization
	void Start () {
		selectedToolBarId = 0;
	}

	// Update is called once per frame
	void Update () {

	}

	void OnGUI(){
		selectedToolBarId = GUILayout.Toolbar(selectedToolBarId,new string[]{"Tab1", "Tab2", "Tab3"});
		switch(selectedToolBarId){
		case 0:
			GUILayout.Label("selected tab1");//在这里绘制Tab1中的内容
			break;
		case 1:
			GUILayout.Label("selected tab2");//在这里绘制Tab2中的内容
			break;
		case 2:
			GUILayout.Label("selected tab3");//在这里绘制Tab3中的内容
			break;
		}
	}
}

5.单选框Toggle,返回布尔值表示当前选中的情况。

if (isMuted) {
			isMuted = GUILayout.Toggle(isMuted, "Yes");
		} else {
			isMuted = GUILayout.Toggle(isMuted, "No");
		}

6.滑动条:纵向, sliderValue = GUILayout.VerticalSlider(sliderValue,0,100);返回值为当前值,第二个参数为最小值,第三个为最大值。
HorizontalSlider()横向。

7.区域Area,相当于一个控件的盒子, Area中的控件跟着Area移动, BeginArea()开始一个区域,参数指定区域的大小和坐标, EndArea()结束区域;

GUILayout.BeginArea (new Rect (50, 50, 100, 100));
GUILayout.Label("Area");
GUILayout.EndArea ();

8.窗口,区域是没有边框和标题的,也不可以拖放。 GUILayout.Window(0, new Rect(50,50,200,200),AddWindow1,“我的窗口”);  第一个参数为窗口的编号,第二个为窗口大小,第三个为void WindowFunction(int
windowId)委托,用来绘制窗口内容。

窗口拖拽,在WindowFunction的最后调用GUI.DragWindow()可以启用全屏拖放(给DragWindow传Rect参数可以设定可拖放的区域)。考虑帧刷新的问题,要在OnGUI把Window()的返回Rect保存才可以可拖动,Start()中设定初始位置。

using UnityEngine;
using System.Collections;

public class GUITest : MonoBehaviour {

	private Rect positionRect;

	// Use this for initialization
	void Start () {
		positionRect = new Rect (50, 50, 200, 150);
	}

	// Update is called once per frame
	void Update () {

	}

	void OnGUI(){
		positionRect =  GUILayout.Window(0, positionRect, WinFunc1, "Title");
	}

	void WinFunc1(int id){
		GUILayout.Button("WinButton");
		GUILayout.Label ("WinLabel");
		GUI.DragWindow();
	}
}
时间: 2024-11-02 19:51:58

Unity3D基础--常用的GUI控件的相关文章

[原]Unity3D深入浅出 - GUI控件

Unity的GUI类提供了丰富的界面控件,通过组合这些控件,完成和用户交互的界面. Lable:绘制文本和图片 Box:绘制一个图形框 Button:绘制一个响应单击事件的按钮 RepeatButton:绘制一个处理连续按下事件的按钮 TextField:绘制一个单行文本输入框 PasswordField:绘制一个密码输入框 TextArea:绘制一个多行文本输入框 Togle:绘制一个开关 Toolbar:绘制一个工具条 SelectionGrid:绘制一组网格按钮 HorizontalSli

C语言实现的简易可移植GUI控件库

从大一开始接触到单片机(MCU),一直都觉得挺好玩的.从8位的51单片机到16位的TI MSP系列的单片机都尝试学过.感觉还不错,不过,以前一直都觉得32位的ARM处理器距离自己很遥远.幸运的是,如今我确实有机会接触一款32位的处理器了.当然使用的是Cortext M4内核,TI Stellaris系列处理器之一.       在这几天的学习中,发现高端的处理器确实很强大,不管是内存,FLash存储空间,还是内部的各种硬件资源都极为丰富.也让我一时间不知所措了.此外,还学习了下TFT彩屏的操作.

Atitit. Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g

Atitit.  Gui控件and面板----程序快速启动区--最佳实践Launchy ObjectDock-o0g 两个方式::: 键盘式::先用热键呼叫出QS,然后开始输入程序中的部分字母,按Enter就 是启动这个程序 鼠标式::mouse左的呼叫出面板,分组,点击启动... 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax 1. ===Launchy Quicksil

cocos2dx基础篇(13)——按钮控件CCControlButton

[引言] 按钮类CCControlButton继承于控件类CCControl. 控件类CCControl主要向子类提供了一系列的控件触发事件.当子控件触发相关的事件后,就会执行相关的控件事件回调函数.这与之前讲的CCMenu中的菜单按钮回调是类似的. 控件类CCControl主要有三个子类: (1)开关控件CCControlSwitch (2)滑块控件CCControlSlider (3)按钮控件CCControlButton 本节讲的是其子类其中之一:按钮类CCControlButton. [

GUI 控件实例学习二(C#)

using UnityEngine; using System.Collections; public class GUITest : MonoBehaviour { public GUISkin myGUISking; private Rect windowRect; private Vector2 scrollPosition; string info=" 测试测试测试测试测试测试测试测试测试测试 \n " + "测试测试测试测试测试测试测试测试\n测试测试测试测试测试测

Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员

Atitit.Gui控件and面板----数据库区-mssql 2008 权限 配置 报表查看成员 1. 配置服务器连接权限 1 2. 配置数据库权限 1 3. 设置表格/视图安全性 2 1. 配置服务器连接权限 配置服务器登录--数据库级别的[安全性]-[登录名]-[新建登录名] 角色::public 作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected] 转载请注明来源: http://blog.csdn.net/attilax 2. 配置数据库权限

atitit.Atitit. Gui控件and面板-----服务端控件 java struts的实现最佳实践

atitit.Atitit.  Gui控件and面板-----服务端控件 java struts的实现最佳实践 1. 服务器控件的类别 1 1.1. 数据控件:该类控件可细分为两种类型:数据源控件和数据绑定控件. 1 1.2. 站点导航控件: 1 1.3. WebParts控件: 1 1.4. 登录控件: 1 1.5. Ajax 控件 1 2. jsf 2 3. Apache  ecs 2 4. Custom ui control... 2 5. Struts UI Tags display d

我教女朋友学编程Html系列(6)—Html常用表单控件

做过网页的人都知道,html表单控件十分重要.基本上我们注册会员.登录用户,都需要填写用户名.密码,那些框框都是表单控件. 本来今天就想写一些常用的html表单控件,于是开始搜资料,找到了一个网页,作者的写作思路和我的基本相同,不过不足的是缺少效果图. 我打算结合着这位仁兄的文章补充一下,增加一些效果图,另外把一些新内容也补充进去,原文的地址是: HTML表单(Forms) 我站在这位仁兄的肩膀上写作,再增加一些东西,配上一些图,我想,效果应该很好,接着就跟着我来学习吧. HTML表单(Form

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被