1.GUI基础

(1)GUI部分是每帧擦除重绘的,只应该在OnGUI中绘制GUI,按钮:GUILayout.Button(“Hello”); 只读标签:GUILayout.Label()

(2)修改控件的颜色:GUI.backgroundColor = Color.red;设置背景色,GUI.color设置前景色,影响OnGUI中之后的控件直到下次修改颜色为止。

2.GUILayout类是用于GUI自动布局的接口。

3.GUILayout布局

(1)GUILayout布局默认会伸展控件的尺寸。Button等控件支持params GUILayoutOption[] options可变参数数组,可以通过GUILayout.Width(30)返回一个设置控件宽度的GUILayoutOption对象, Height()、 MinWidth()、MinHeight()等同理。例子: GUILayout.Button("Test",GUILayout.Width(500),GUILayout.Height(30))

(2)GUILayout采用线性布局,类似于StackPanel,默认是纵向布局。通过GUILayout.BeginHorizontal();开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical()。

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

4.常用GUI控件

(1)密码框:pwd = GUILayout.PasswordField(pwd,‘*’),第二个参数为掩码字符,注意帧刷新的问题。

(2)Button只有鼠标抬起才会返回true,这样用Button做发射子弹就不能按下一直发射,可以使用RepeatButton,这样按下期间会一直返回true。案例:Button和RepeatButton实现游戏对象移动。

(3)Tab页: electedToolBarId = GUILayout.Toolbar(selectedToolBarId,new string[]{“装备”,“经验”,“队友”});  返回值为激活的按钮的序号。

(4)复选框:isMuted = GUILayout.Toggle(isMuted,“静音”);

(5)多行文本区: msgBody = GUILayout.TextArea(msgBody,GUILayout.Width(300),GUILayout.Height(300));

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

(7)区域Area,相当于一个控件的盒子, Area中的控件跟着Area移动, BeginArea()开始一个区域,参数指定区域的大小和坐标, 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 Cube1Control : MonoBehaviour {
public Texture texture;
public Texture2D texture2D;
public Texture2D texture2DActive;
public string userName;
public string password;
public string remark;
public bool isSuccess;
public int select=;
public bool toggle1 = false;
public Texture2D bug1;
public Texture2D bug2;
public float h;
public Vector2 vector2;
Rect rect1 = new Rect(, , , );
Rect rect2 = new Rect(, , , );
public int selGridId = ;
string[] selString = new string[] { "Grid1", "Grid2", "Grid3", "Grid4", "Grid5" }; // Use this for initialization
void Start () {
h = ;
} // Update is called once per frame
void Update () { } void win(int id)
{ GUI.Button(new Rect(, , , ), "点击按钮"); //使用DragWindow启用窗口拖动
GUI.DragWindow(); } void OnGUI()
{
#region GUILayout布局
////GUILayout采用线性布局,类似于StackPanel,默认是纵向布局。通过GUILayout.BeginHorizontal();
////开启和GUILayout.EndHorizontal()结束一个横向排列区域,同理BeginVertical() 、EndVertical()。
//GUILayout.BeginHorizontal();
//GUILayout.Button("Button1", GUILayout.Width(100), GUILayout.Height(50));
//GUILayout.Button("Button2", GUILayout.Width(100), GUILayout.Height(50));
//GUILayout.EndHorizontal(); //GUILayout.BeginVertical();
////如果嫌控件太挤,可以使用GUILayout.Space(30);增加若干像素的间隙。
//GUILayout.Space(30);//Button3和Button1在垂直方向上面就会增加30个像素的间隙
//GUILayout.Button("Button3", GUILayout.Width(100), GUILayout.Height(50));
//GUILayout.Button("Button4", GUILayout.Width(100), GUILayout.Height(50));
//GUILayout.EndVertical();
#endregion #region 常用的GUI控件
#region GUI.Button
//GUI.Button(new Rect(20, 20, 150, 30), "这是一个文字按钮"); ////绘制纹理按钮
//GUI.Button(new Rect(20, 60, 150, 30), texture);//texture是在unity上面Script脚本上面拖上图片进行赋值的
////绘制一个带图片和文字按钮
//GUIContent guic = new GUIContent("按钮", texture);
//GUI.Button(new Rect(20, 100, 150, 30), guic); ////设置按钮的样式
//GUIStyle guis = new GUIStyle();
//guis.fontSize = 23;
//guis.alignment = TextAnchor.MiddleCenter; ////设置状态样式
//GUIStyleState guiss = new GUIStyleState();
//guiss.textColor = Color.white;
//guiss.background = texture2D;//设置按钮背景图片,texture2D在编辑器上拖图片赋值
//guis.normal = guiss;//设置按钮正常显示的状态
//GUIStyleState guissActive = new GUIStyleState();
//guissActive.textColor = Color.white;
//guissActive.background = texture2DActive;//设置按钮背景图片,texture2D在编辑器上拖图片赋值
//guis.active = guissActive;//设置鼠标按下去按钮上显示的状态
//guis.hover = guissActive;//设置鼠标放在按钮上显示的状态
//if (GUI.Button(new Rect(20, 140, 150, 30), "样式按钮", guis))//点击后返回true
//{
// Debug.Log("点击了按钮");
//}
#endregion #region GUI.Label
//GUI.color = Color.red;//全局设置颜色,设置后后面的控件都变为红色,直到重新设置颜色
//GUI.Label(new Rect(20, 180, 100, 50), "label1");
//GUI.color = Color.blue;
//GUI.Label(new Rect(20, 200, 100, 50), "label2");
#endregion #region GUI.TextField GUI.PasswordField GUI.TextArea
//userName = GUI.TextField(new Rect(10, 10, 100, 30), userName);
//password = GUI.PasswordField(new Rect(10, 50, 100, 30), password,'*');
//remark = GUI.TextArea(new Rect(10, 100, 100, 30),remark);
//if (GUI.Button(new Rect(10,150,50,30),"登录"))
//{
// Debug.Log(userName + "-"+password+"-"+remark);
// if (userName.Equals("admin")&&password.Equals("123"))
// {
// isSuccess = true;
// }
// else
// {
// isSuccess = false;
// }
//}
//if (isSuccess)
//{
// GUI.Label(new Rect(10, 200, 100, 30), "登录成功!");
//}
//else
//{
// GUI.Label(new Rect(10, 200, 100, 30), "登录失败!");
//}
#endregion #region GUI.Toolbar GUI.Toggle GUI.HorizontalSlider
//Tab页,返回值为激活的按钮的序号,三个按钮并排,select为0选中第一个按钮
//select = GUI.Toolbar(new Rect(0, 0, 300, 50), select, new string[] { "功能一", "功能二", "功能三" });
//Debug.Log(select); //单选按钮
//GUIStyle gs = new GUIStyle();
//GUIStyleState gss = new GUIStyleState();
//gss.textColor = Color.white;
//gs.normal = gss;
//gs.active = gss;
//GUIContent contenxt = new GUIContent("开关", bug1);
//if (toggle1)
//{
// contenxt.image = bug2;
//}
//// toggle = GUI.Toggle(new Rect(10, 10, 100, 30), toggle, "是否开启声音");
//toggle1 = GUI.Toggle(new Rect(10, 10, 50, 50), toggle1, contenxt, gs);
//GUI.Label(new Rect(10, 80, 100, 30), toggle1 + ""); //水平拖动的Slider,h为Slider赋值
//h = GUI.HorizontalSlider(new Rect(0, 0, 100, 100), h, 0, 100);
//Debug.Log(h);
#endregion #region GUI.BeginScrollView GUI.BeginGroup GUI.Window GUI.SelectionGrid
//开始滚动视图
// public static Vector2 BeginScrollView(Rect position, Vector2 scrollPosition, Rect viewRect, bool alwaysShowHorizontal, bool alwaysShowVertical);
//position 用于滚动视图在屏幕上矩形的位置
//scrollPosition 用来显示滚动位置
//viewRect 滚动视图内使用的矩形
//vector2 = GUI.BeginScrollView(new Rect(0, 0, 200, 200), vector2, new Rect(0, 0, 200, 200), true, true);
//GUI.Button(new Rect(0, 0, 50, 50),"Button");
//GUI.EndScrollView(); //开始组 将控件都放在一组中,只要组变动,里面的控件都跟着变
//GUI.BeginGroup(new Rect(10, 100, 200, 400));
//GUI.Label(new Rect(10, 100, 100, 30), "群组视图1");
//GUI.Button(new Rect(10, 130, 100, 30), "按钮");
//GUI.EndGroup();
//GUI.BeginGroup(new Rect(200, 0, 300, 400));
//GUI.Label(new Rect(10, 100, 100, 30), "群组视图2");
//GUI.Button(new Rect(10, 130, 100, 30), "按钮");
//GUI.EndGroup(); //弹出窗口
//必须要把窗口的位置设置成全局变量,窗口里面内容在回调函数里面写
//rect1 = GUI.Window(0, rect1, win, "窗口");
//rect2 = GUI.Window(1, rect2, win, "窗口"); //选择表格
//selGridId = GUI.SelectionGrid(new Rect(10, 10, 300, 200), selGridId, selString, 2);
//Debug.Log(selGridId);
#endregion #region GUILayout.BeginArea
//区域就是无边框的窗口,Button控件随着区域移动
//GUILayout.BeginArea(new Rect(0, 50, 200, 200), "Area");
//GUI.Button(new Rect(0,0,100,50),"Button");
//GUILayout.EndArea();
#endregion #endregion }
}

Unity3D入门之GUI基础以及常用GUI控件使用(2)的更多相关文章

  1. GUI学习之二——PyQt控件初识

    一.控件概念 控件是一个程序界面上的各个独立的元素, 它具备用户点击.接收用户输入.展示不同内容.存放其他控件等功能. 二.控件分类 常用的控件按功能可以分为以下几种类 按钮 QPushButton— ...

  2. winform快速开发平台 -> 基础组件之分页控件

    一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...

  3. 【转】ASP.NET常用数据绑定控件优劣总结

    转自:http://www.cnblogs.com/Olive116/archive/2012/10/24/2736570.html ASP.NET常用数据绑定控件优劣总结   本文的初衷在于对Asp ...

  4. 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件

        好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...

  5. ASP.NET常用数据绑定控件优劣总结

    本文的初衷在于对Asp.net常用数据绑定控件进行一个概览性的总结,主要分析各种数据绑定控件各自的优缺点,以便在实际的开发中选用合适的控件进行数据绑定,以提高开发效率. 因为这些数据绑定控件大部分都已 ...

  6. 【风马一族_Android】第4章Android常用基本控件

    第4章Android常用基本控件 控件是Android用户界面中的一个个组成元素,在介绍它们之前,读者必须了解所有控件的父类View(视图),它好比一个盛放控件的容器. 4.1View类概述 对于一个 ...

  7. [置顶] Android常用适配器控件

    Android常用适配器控件 列表控件用于显示数据集合,Android不是使用一种类型的控件管理显示和数据,而是将这两项功能分布用列表控件和适配器来实现.列表控件扩展了android.widget.A ...

  8. 重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试

    原文:重新想象 Windows 8 Store Apps (16) - 控件基础: 依赖属性, 附加属性, 控件的继承关系, 路由事件和命中测试 [源码下载] 重新想象 Windows 8 Store ...

  9. WEB页面常用基本控件测试用例

    一.树控件的测试外观操作 1)项目中的所有树是否风格一致 2)树结构的默认状态是怎样的.比如默认树是否是展开,是展开几级?  是否有默认的焦点? 默认值是什么?展开的节点图标和颜色? 2.执行操作 1 ...

随机推荐

  1. Laravel教程 八:queryScope 和 setAttribute

    Laravel教程 八:queryScope 和 setAttribute 此文章为原创文章,未经同意,禁止转载. Laravel Eloquent Database 直接就是按照上一节所说的那样,我 ...

  2. ThinkPad紧凑型蓝牙键盘(0B47189)鼠标滚轮用法,F1到F12功能键的功能切换以及其他技巧

    入手小红点蓝牙键盘(ThinkPad Compact Bluetooth),手感极佳,小红点特别适合程序员工作,双手无需离开键盘就可以操作鼠标,完全解决肩部.腕部疲劳酸痛问题,程序员健康的大福音! 使 ...

  3. JS触发事件大全

          事件 浏览器支持 解说 一般事件 onclick IE3.N2 鼠标点击时触发此事件 ondblclick IE4.N4 鼠标双击时触发此事件 onmousedown IE4.N4 按下鼠 ...

  4. Practical Machine Learning For The Uninitiated

    Practical Machine Learning For The Uninitiated Last fall when I took on ShippingEasy's machine learn ...

  5. UML用例图总结

    用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示了一个外部用户能够观察到的系统功能模型图. [用途]:帮助开发团队以一种可视化的方式理解系统的功能需求. 用例图所包含的元素如下: 1. ...

  6. 新浪微博客户端(5)-自定义UISearchBar

    iOS自带的UISearchBar有很多限制,我们可以使用UITextField做出一个类似于SearchBar的效果. //===================================== ...

  7. 向github提交代码

    Quick setup — if you've done this kind of thing before https://github.com/KoMiles/emlog.git Create a ...

  8. 读>>>>白帽子讲Web安全<<<<摘要→我推荐的一本书→1

      <白帽子讲Web安全>吴翰清著 刚开始看这本书就被这本书吸引,感觉挺不错,给大家推荐下,最近读这本书,感觉不错的精华就记录下, 俗话说>>>好脑袋不如一个烂笔头< ...

  9. unity3d 加密资源并缓存加载

    原地址:http://www.cnblogs.com/88999660/archive/2013/04/10/3011912.html 首先要鄙视下unity3d的文档编写人员极度不负责任,到发帖为止 ...

  10. How to Configure Nginx for Optimized Performance

    Features Pricing Add-ons Resources | Log in Sign up   Guides & Tutorials Web Server Guides Nginx ...