• Unity3d 内置图形界面系统(Editor GUI)


    一、说在前面的

    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系统可以分为相对四个独立的部分。它们之间有共有的组件,有不同但相似的组件,也有只用的于编辑器的组件。只要我们分开来学习,是不学混乱的。分合思想在应该也是很重要的学习方式!

  • 相关阅读:
    【原创】Algorithms:原地归并排序
    Java中相等测试
    测试可变字符序列stringBuilder
    呃。。第一篇随笔。
    hiho兄弟的字典树之争(hiho1014)
    字典树
    最大公约数
    素数
    递归算法1
    logging模块,collections模块,random模块
  • 原文地址:https://www.cnblogs.com/zhaoqingqing/p/3553213.html
Copyright © 2020-2023  润新知