(搬运自我在SegmentFault的博客)

最近在学习Unity的过程中,自己做一款小游戏自娱自乐。自然需要用到GUI。但4.5中的GUI很难用,一个选择是传说中的NGUI插件。但对于4.6中的新GUI,我也有所耳闻。想了想还是选择官方的技术较好,于是就有了这篇。

Canvas

在新GUI中,所有的UI组件都位于Canvas上。Canvas有三种渲染模式:

  • Screen Space - Overlay:将UI放置在场景的上面,调节场景大小或调整分辨率,则Canvas也会随之调整。
  • Screen Space - Camera:Canvas由一个特定的相机渲染,相机的设置会影响UI。
  • World Space:使Canvas像场景中的其他对象一样渲染。

Rect Transform

所有的UI元素都使用矩形来表示。

Rect Transform是为UI设计的新transform组件。除了普通transform组件的position、rotation、scale之外, 还增加了width和height。

Update:两种编辑模式:

  • Blueprint:在此模式下,物体不会旋转和缩放。
  • Raw Edit:在此模式下,调整物体的Pivot和Anchor不会改变物体的位置和尺寸。

Rect Tool

4.6的工具栏中加入了新的小工具Rect Tool,用于调整UI和2D对象。使用这个小工具,就可以完成移动、调整大小、旋转等工作。

当使用Rect Tool调整对象的尺寸时,如果是2D或3D对象,他会调整其scale;而对于有Rect Transform的对象,则会调整其width和height。

Update:Resize和Scale的区别:前者不影响字体大小;后者可以设置负值,相当于将物体反过来,前者不允许负值。

当切换至Pivot模式,可以调整其pivot。再次点击切换回Center模式。

Anchors

Rect Transform中增加了Anchors属性,其中包括Anchor Min和Anchor Max。Anchors用于指定在父UI元素调整时,子UI元素如何调整。具体行为由Anchor Min(左下)和Anchor Max(右上)两个锚点决定。坐标以矩形左下为(0, 0),右上为(1, 1)。

但实际上,Unity已经提供了预定义的模式。在Rect Transform的左上角点击,出现如下的常用Anchor模式。

以top-left模式为例,此时锚点位于父元素的左上角。如果拉动父元素矩形的左边框和上边框,则子元素的位置也随之变化。而拉动另外两条边则不发生变化。

在middle或center模式下,拉动轴两侧的边子元素均会随之移动。

此外还有stretch模式,在拉动时会拉伸或压缩子元素。

新的组件

  • Text:也就是Label。

  • Image

  • RawImage:与Image不同之处在于,Image的参数是Sprite,而RawImage的参数是Texture。

交互

交互组件都有一个transition属性,用于实现组件在不同状态下产生不同的变化。有三个选项:

  • Color Tint:改变颜色。有一个Fade Duration的参数控制变化的时长。
  • SpriteSwap:不同状态下展示不同的Sprite。
  • Animation:由一个动画控制器来决定显示。不同状态下触发不同的事件。
  • None:没有变化。

Button提供了OnClick属性,可以为按钮添加响应。点击加号,可以添加一个委托。

其中有三个空,第一个表示目标对象,第二个表示要选用的函数,第三个是对应的参数列表,由前两项决定。

以点击按钮改变按钮的文字为例。第一个就是Button下的Text对象,第二个是Text.text,第三个则是你要改变为的内容。

此外还有其他的控件,如Toggle、Slider、ScrollBar、Selection List。

自动布局

一些更加复杂的布局技术,暂时没有这个需求,就不看了。

动画集成

这部分文档没写,囧。

富文本

Rich Text在新的GUI系统中默认是禁用的,但是可以通过GUIStyle来使用:

GUIStyle style = new GUIStyle ();
style.richText = true;
GUILayout.Label("<size=30>Some <color=yellow>RICH</color> text</size>",style);

学习Unity 4.6新GUI系统的更多相关文章

  1. Unity学习疑问记录之新GUI

    学习Unity 4.6新GUI系统 http://segmentfault.com/a/1190000000642686

  2. 【Unity3D基础教程】给初学者看的Unity教程(六):理解Unity的新GUI系统(UGUI)

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点推荐.谢谢! 理解UGUI的基础架构 UGUI是Unity在4 ...

  3. Unity3D_05_理解Unity的新GUI系统(UGUI)

    理解Unity的新GUI系统(UGUI) Unity GUI 链接:UnityEngine.UI系统基础类架构图  Unity GUI 链接:UnityEngine Event & Event ...

  4. 详解Unity 4.6新UI的布局

    本文所讲的是Unity 4.6中新加入的uGUI,官方称Unity UI,而不是过去的OnGUI式的旧UI(官方称Legacy GUI). 我曾经在8月份对照4.6 Beta的文档写过一篇笔记学习Un ...

  5. Unity 4.0 中的新动画系统——MecAnim

    分享一个文档资料,关于动画系统的,版本应该很老了,但是有借鉴意义的: Unity 4.0 已于 2012 年 11 月 15 日正式发布,Unity 每一次版本的提升,都给游戏开发者带来惊喜,这一次也 ...

  6. 图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)

    Android 的窗口管理系统 (View, Canvas, WindowManager) 在图解Android - Zygote 和 System Server 启动分析一 文里,我们已经知道And ...

  7. 图解Android - System Service 概论 和 Android GUI 系统

    通过 图解Android - Binder 和 Service 一文中,我们已经分析了Binder 和 Service的工作原理.接下来,我们来简要分析Android 系统里面都有哪些重要的Servi ...

  8. 图解Android - Android GUI 系统 (1) - 概论

    Android的GUI系统是Android最重要也最复杂的系统之一.它包括以下部分: 窗口和图形系统 - Window and View Manager System. 显示合成系统 - Surfac ...

  9. 图解Android - Android GUI 系统 (5) - Android的Event Input System

    Android的用户输入处理 Android的用户输入系统获取用户按键(或模拟按键)输入,分发给特定的模块(Framework或应用程序)进行处理,它涉及到以下一些模块: Input Reader: ...

随机推荐

  1. linux下安装Drcom

    环境:台式机物理机,centos7 因为要下载依赖包,物理机一开始没有网络,所以我先使用的是实验室的公用ip,然后完成以下操作(网上有大神说,可以现在其他机器上下载依赖包,copy过来也可以,但我没有 ...

  2. win7 卸载ie10+ 重新安装ie8

    烦恼: erp系统不支持高版本ie10+ 项目开发测试需要安装了高版本ie 项目结束,为了方便使用erp,决定卸载ie11,重新安装ie8 解决方法: 1.win+R打开运行命令,键入appwiz.c ...

  3. HDU - 3001 Travelling(三进制状压dp)

    Travelling After coding so many days,Mr Acmer wants to have a good rest.So travelling is the best ch ...

  4. 杭电1002_A + B Problem II

    这是该题的链接http://acm.hdu.edu.cn/showproblem.php?pid=1002 具体的题的内容就不过多描述了,想必你已经知道了,当我看完这道题后就知道咋写了,可是这道题从开 ...

  5. python_文件目录的操作

    Python文件的主要操作 主要包括: 1,创建一个文件 2,删除一个文件 3,创建一个目录 4,删除一个目录 5,拷贝,重命名,查看文件大小 6,列出某个目录下文件的数量 7,递归打印某个目录下的所 ...

  6. php curl采集,服务器gzip压缩返回数据怎么办

    一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch   这里是gzip .deflat ...

  7. 洛谷P1633 二进制

    P1633 二进制 题目描述 有三个整数A.B.C,以下用N(2)表示N的二进制(没有前导0). 设A(2).B(2).C(2)的最大长度为L,你需要构造三个正整数X.Y.Z,满足以下条件: (1) ...

  8. IOS 版本控制判断

    // 版本判断#define SYSTEM_VERSION(ver) [[[UIDevice currentDevice] systemVersion] compare:ver] != NSOrder ...

  9. Luogu P3941 入阵曲【前缀和】By cellur925

    题目传送门 题目大意:给你一个\(n\)*\(m\)的矩阵,每个位置都有一个数,求有多少不同的子矩阵使得矩阵内所有数的和是\(k\)的倍数. 数据范围给的非常友好233,期望得到的暴力分:75分.前1 ...

  10. 进击JavaScript核心 --- (1)基本数据类型

    ES5之前提供了 5种基本数据类型 和 1种引用数据类型 基本数据类型:Undefined, Null, String, Number, Boolean 引用数据类型:Object ES6开始引入了一 ...