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. Why The Golden Age Of Machine Learning is Just Beginning

    Why The Golden Age Of Machine Learning is Just Beginning Even though the buzz around neural networks ...

  2. hdu 2187 悼念512汶川大地震遇难同胞——老人是真饿了

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2187 题目简问: 解题思路: 已知给出了 总钱数 和 一共的种类 1. 对给出的大米,按照价格进行升序 ...

  3. cmd+lcx+nc+sc提权工具总结

    cmd:执行命令的载体cmdshell lcx:端口映射工具 1.在自己的host上的cmd下运行:lcx.exe -listen 51 3389 //意思是监听51端口并转发到3389端口 2.在服 ...

  4. ssh项目删除

    1.在页面添加删除跳转 <td><a href="deleteStandard.action?id=${sta.id }">删除</a>< ...

  5. Visual Studio Online Integrations-Other

                                                         原文:yuanhttp://www.visualstudio.com/zh-cn/explor ...

  6. Swift语言简介+快速上手

    相关: Xcode 6 beta:https://developer.apple.com/xcode/downloads/ swift语言学习文档英文版:http://pan.baidu.com/s/ ...

  7. apache配置多个虚拟主机

    设置apache 多个虚拟目录记录 #配置第2个虚拟目录<VirtualHost 127.0.0.2:80>ServerName www.xx.comDocumentRoot " ...

  8. JavaScript初级教程(Jquery)

    序,学习前端页面编程技术,JS是不得不学的一门技术,目前JS不仅可以作为前端编程语言,在服务器端也有了一定发展,例如NodeJS.废话不多书,本篇博客主要介绍JS作为前端语言,怎样获得和改变HTML标 ...

  9. C#常用函数→ASP.NET篇

    C#常用函数→ASP.NET篇 转载地址→http://www.cnblogs.com/superfang/archive/2008/07/02/1233706.html 以前我都是"原文地 ...

  10. unity缓存和浏览器缓存

    原地址:http://www.cnblogs.com/hisiqi/p/3203553.html <蒸汽之城>游戏中,为什么会黑屏?或者无法正常进入游戏? 我们在进行多项测试中发现少数用户 ...