一、说在前面的

1、unity内置的ui系统,无论是在性能的表现上、功能的强大性上、制作复杂ui的便捷性上,还是其它的一些方面都不如一些第三方的插件来的好,如:NGUI和DF-GUI(PS: 后者比前者要好很哦,推荐!))。

2、虽然UnityGUI不如某些第三方的插件,但是它在做一些简单的测试上,做数据高度上还是要方便一些的;而且如果你要做Inspector的定制与Unity插件开发的话,UnityGUI你是绕不过去的哦。所有大概熟悉一下UnityGUI还是必要的!

3、关于UnityGUI的所有知识,在官方文档中的都有详细的介绍,在圣典上也有一一翻译。我这里只是做一些简单的记录,也许有不对的地方,也许以后还会所补充!

4、还有就刚接触这块时觉得UnityGUI相关API有点乱,觉得来必要记录一下。

二、GuiLayer组件

GuiLayer是显示UnityGUI元素的必要组件,且必须附在一个相机对象上!不然你的UI是显示不出来的。

三、古老的组件

1、这部分主要是GuiTextGuiTexture组件,GuiElement是它们的基类,详参相应的链接。
2、GuiText以用来打印显示一些调试信息和简单的数据显示。
3、GuiTexture也在用来做一些简单ui部件或整个游戏画面的背景。

四、UnityGUI系统的分类

这部分就比较复杂一些了。
1、首先它可以分成两个独立的部分:非Editor类与Editor类。其中每部分中可以分成两个独立的部分:GUI系和GUILayout系。其中的GUI系下的组件的名字基本上只用“GUI”开头,而GUILayout系下的组件的名字基本上是“GUILayout”开头的。这样就有四个相对独立的UI系统了,这四个部分,每个拿出来都能相对完整个完成一个UI制做。
2、不同的是Editor类是用于编译器的制定与扩展方面,GUILayout系要比GUI系在功能上要强一点而以。呵呵,是不是有点绕,有点乱,有点晕。非Editor类与Editor类共存还点说的过去,GUILayout系要比GUI系共存就有点那个了。
3、本来一个不复杂的UI系统,搞这好几套,还混合着用,就变得有点头疼不。出现这种情况可能是为了向上兼容吧,不过代价有点大啊。
4、不过只要我们理清楚它们的别,尽量只用一种,应该还好吧!下面我将会重点记录GUILayout系的UI,

五、GUILayout系下的组成

1、样式的组件

GUISkinGUIStyleGUISetting这是四个类别所共享的。
GUISkin是一组件GUIStyle的集合。GUISkin包含一组所有控件的样式,可以修改,也可自定新的。
GUISetting是UI的一些标准设置,这些设置被所有在GUISkin中的元素共享。它也是包含在GUISkin的组件的inspector下的。
GUIStyle定义一个界面元素(或者一个控件)如何渲染的所有信息,如它使用的字体、图标位置、背景图片和间距等等,很多的设置。

2、控件构造组件

GUILayout是用来结构各类控件的。
构造一个控件可以有三个参数:
内容--文本/图片/GUIContent;
样式--GUIStyle对象;
布局选项--GUILayoutOption对象,这个参数的数量是可变的。用于控制控件的大小,当于GUI系中的Rect参数。注:GUILayoutOption对象要通过GUILayout组件下的如下方法获取
GUILayout.Width, GUILayout.Height, GUILayout.MinWidth, GUILayout.MaxWidth, GUILayout.MinHeight, GUILayout.MaxHeight, GUILayout.ExpandWidth, GUILayout.ExpandHeight。

3、布局组件

布局组件有两个:GUILayout和GUILayoutUtility.
这里要说一下GUILayout,这是个很牛X的组件。它有三大功能:创造控件、设置并获取GUILayoutOption对象、和布局控件的功能。
GUILayout的布局功能有:插空白、垂直布局、水平布局、滚动视图布局、还一个窗口布局。混合嵌套这些布局方式,基本上就要得到你想要的UI了。
GUILayoutUtility这个组件是GUILayout的一个补充,它提供了一个方法,在构造一个控件之前,先获取它的矩形大小或先设置一个要使用的矩形大小。

六、说在最后的

1、上面我只大概说了一下UnityGUI系的UI组件的用法,其它的也差不多。
2、前面已经说了,UnityGUI系统可以分为相对四个独立的部分。它们之间有共有的组件,有不同但相似的组件,也有只用的于编辑器的组件。只要我们分开来学习,是不学混乱的。分合思想在应该也是很重要的学习方式!

Unity3d 内置图形界面系统(Editor GUI)的更多相关文章

  1. Unity3d 网络编程(三)(Unity3d内置简单的网络server编制)

    使用Unity3d内置的网络建立一个简单的server.主机时,请使用机器.创建一个client连接到本机. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv ...

  2. 如何从光盘本地安装CentOS 7图形界面(Gnome GUI)

    本例中通过在CentOS 7中修改repo文件,直接从光盘或者ISO镜像文件安装Gnome图形界面(Gnome GUI),从而避免耗时从官网或镜像下载. 1.首先确保光盘或者ISO镜像文件正确连接到客 ...

  3. django内置的认证系统

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  4. Swing AWT一套新的图形界面系统

    Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充. 例如说并不是所有的操作系统都提供了对树形控 ...

  5. win10开启 linux Bash命令(win10内置了linux系统支持)

    win10开启 Ubuntu linux Bash命令(win10内置了linux系统支持) 第一步: 先在设置→更新和安全→针对开发人员中选择"开发人员模式",点击后会下载&qu ...

  6. [自制操作系统] BMP格式文件读取&图形界面系统框架/应用接口设计

    本文将介绍在本人JOS中实现的简单图形界面应用程序接口,应用程序启动器,以及一些利用了图形界面的示例应用程序. 本文主要涉及以下部分: 内核/用户RW/RW调色板framebuffer共享区域 8bi ...

  7. Tkinter图形界面设计(GUI)

    [因为这是我第一个接触的GUI图形界面python库,现在也不用了,所以大多数内容都来自之前花 钱买的一些快速入门的内容,可以当作简单的知识点查询使用] 在此声明:内容来自微信公众号GitChat,付 ...

  8. Unity3D内置着色器

    Unity内部提供了一些可以直接使用的着色器,这些内置着色器包括以下6个方面: (1)Performance of Unity shaders 着色器的性能和两个方面有关:shader本身和rende ...

  9. 基于OSGI.Net的图形界面系统

    在2013年的十月份有幸接触了osgi.net和iopenworks的创始人,了解和学习的插件式开发,开始了后台数据的处理生涯. 第一个有图形界面的系统——智能农业的环境监测系统,其实在这个系统中所有 ...

随机推荐

  1. 度娘果然毫无节操,纯粹就是order by 广告费 desc

    度娘果然毫无节操,纯粹就是order by 广告费 desc 必应搜索出来排第一,度娘根本就找不到在哪....

  2. C++ 面向对象的三个特点--多态性(一)

    C++的多态性定义 所谓多态性就是不同对象收到相同的消息产生不同的动作.通俗的说,多态性是指一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问功能不同的函数,从而实现“一个接口 ...

  3. WebForm(ASP开发方式,IIS服务器、WebForm开发基础)

    一.B/S和C/S 1.C/S C/S 架构是一种典型的两层架构,其全程是Client/Server,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据 ...

  4. java分派

    变量被声明时的类型叫做变量的静态类型(Static Type) 又叫明显类型(Apparent Type).变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type). 根据对象的类型而 ...

  5. VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法

    VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machin ...

  6. OC中NSDictionary和NSSet简单操作

    /** *  字典 存放键值对类型的数据 存放数据是无序的 */ // 字典在控制台输出是用{}包括起来的 // NSDictionary 不可变字典 // 1.创建对象 // 初始化方法 NSDic ...

  7. iOS 使用SDwebImage缓存图片并在断网时候显示

     [_loadImageView setShowActivityIndicatorView:YES];    [_loadImageView setIndicatorStyle:UIActivityI ...

  8. 我的mac上的软件(以防优盘重装系统使用)

     

  9. 使用JDBC对数据库进行查询的前期准备工作,以及简单的JDBC访问MySQL数据库(Mac)

    首先JDBC的前期数据库数据准备: 1,打开链接好MySQL的Workbench软件,新建一个数据库: 2.然后打开数据库对应的代码编辑窗口,建立表和插入数据记录: 3.然后是打开关于javaWeb编 ...

  10. Effective Java 50 Avoid strings where other types are more appropriate

    Principle Strings are poor substitutes for other value types. Such as int, float or BigInteger. Stri ...