Unity 3D UGUI 系统

UGUI 是 Unity 官方的 UI 实现方式,自从 Unity 4.6 起,Unity 官方推出了新版 UGUI 系统。

新版 UGUI 系统相比于 OnGUI 系统更加人性化,而且是一个开源系统,利用游戏开发人员进行游戏界面开发。

UGUI 系统有 3 个特点:灵活、快速、可视化。

对于游戏开发者来说,UGUI 运行效率高,执行效果好,易于使用,方便扩展,与 Unity 3D 兼容性高。

UGUI 中创建的所有 UI 控件都有一个 UI 控件特有的 Rect Transform组件。

在 Unity 3D 中创建的三维物体是 Transform,而 UI 控件的 Rect Transform 组件是UI控件的矩形方位,其中的 PosXPosYPosZ 指的是 UI 控件在相应轴上的偏移量。

UI 控件除了 Rect Transform 组件外,还有一个 Canvas Renderer(画布渲染)组件。

  • UGUI Canvas 画布

Canvas画布是摆放所有 UI 元素的区域,在场景中创建的所有控件都会自动变为 Canvas游戏对象的子对象。

若场景中没有画布,在创建控件时会自动创建画布。

不论是你主动创建还是被动创建,系统都会自动创建一个名为 EventSystem 的游戏对象,该对象挂载了若干与事件监听相关的组件,可供设置。

渲染模式

在画布属性栏中有一个 Render Mode 属性。

image.png

1.Screen Space-Overlay 渲染模式。
Screen Space-Overlay 渲染模式下,场景中的 UI 会被渲染到屏幕上,如果屏幕大小或分辨率发生改变,画布会自动适配。

该模式下不需要 UI 摄像机, UI 将永远出现在所有摄像机的最前面。

参数 功能
Pixel Perfect 重置元素大小和坐标,使贴图的像素完美对应到屏幕像素上。
Sort Order 排列顺序。

2.Screen Space-Camera 渲染模式。
Screen Space-Camera 渲染模式类似于Screen Space-Overlay 渲染模式。

这种渲染模式下,画布被放置在指定摄像机前的一个给定距离上,它支持在 UI 前方显示 3D 模型与粒子系统等内容,通过指定的摄像机 UI 被呈现出来,如果屏幕大小改变或更改了分辨率,画布将自动更改大小以适配屏幕。

参数 功能
Pixel Perfect 重置元素大小和坐标,使贴图的像素完美对应到屏幕像素上。
Render Camera UI 绘制所对应的摄像机。
Plane Distance UI 距离摄像机镜头的距离。
Sorting Layer 界面分层,执行 Edit → Project Setting → Tags and
Layers → Sorting Layers 命令进 行界面分层,越下方的层在界面显示时越在前面。
Order Layer 界面顺序,该值越高,在界面显示时越在前面。

3.World Space 渲染模式。
World Space 渲染模式下呈现的UI 好像是 3D 场景中的一个Plane对象。与前两种渲染模式不同,其屏幕的大小将取决于拍摄的角度和相机的距离。

它是一个完全三维的 UI,也就是把 UI 也当成三维对象,例如摄像机离 UI 远了,其显示就会变小,近了就会变大。

参数 功能
Event Camera 设置用来处理用户界面事件的摄像机。
Sorting Layer 界面分层,执行 Edit → Project Setting → Tags and
Layers → Sorting Layers 命令进 行界面分层,越下方的层在界面显示时越在前面。
Order Layer 界面顺序,该值越高,在界面显示时越在前面。

UGUI Event System 事件系统

Unity 3D 中创建 UGUI 控件后,会同时创建 Event System 事件系统的 GameObject,用于控制各类事件。

Unity 3D 自带两个 Input Module ,一个用于响应标准输入,另一个用于响应触摸操作。
Input Module 封装了 Input模块的调用,根据用户操作触发各 Event Trigger。

Event System 事件处理器

  • Event System 事件处理组件。
    将基于输入的时间发送到应用程序中的对象,使用键盘、鼠标、触摸或自定义输入均可。

  • Standalone Input Module独立输入模块。
    基于输入 InputManager 管理器的状态发送事件,用于鼠标、键盘和控制器。该模块被配置为查看 InputManager

  • Touch Input Module 触控输入模块。
    被设计为使用在可触摸的基础设备上。

UGUI Panel 控件

Unity 3D panel 控件又叫面板,该面板实际上就是一个容器,在其上可放置其他 UI 控件。

当移动该面板时,放在其中的UI 控件就会跟随移动,这样可以更加合理与方便地移动与处理一组控件。

拖动面板控件的 4 个角或 4 条边可以调节面板的大小。

一个功能完备的 UI 界面往往会使用多个 Panel 容器控件,而且一个面板里还可套用其他面板,如下图所示。

image.png

当面板被创建时,会默认包含一个 Image (Script 组件)。
image.png

  • Source Image 用来设置面板的图像。
  • Color 用来改变面板的颜色。

UGUI Text 控件

Unity 3D UGUI 中创建的很多 UI 控件都有一个支持文本编辑的 Text控件。

Text 控件也被称为标签。Text区域用于输入将要显示的文本。通过它可以设置字体、样式、字号等内容。

image.png

参数列表

参数 描述
Font 设置字体。
Font Style 设置字体样式。
Font Size 设置字体大小。
Line Spacing 设置行间距(多行)。
Rich Text 设置富文本。
Alignment 设置文本在 Text 框中的水平以及垂直方向上的对齐方式。
Horizontal Overflow 设置水平方向上溢出时的处理方式。分两种:Wrap(隐藏)Overflow(溢出)
Vertical Overflow 设置垂直方向上溢出时的处理方式。分两种:Truncate(截断)Overflow(溢出)
Best Fit 设置当文字多时自动缩小以适应文本框的大小
Color 设置字体颜色

UGUI Image 控件
Unity 3D Image 控件除了两个公共的组件 Rect TransformCanvas Renderer 外,默认的情况下就只有一个 Image 组件,如下图所示。

image.png

其中,Source Image 是要显示的源图像,要想把一个图片赋给 Image,需要把图片转换成精灵格式,转化后的精灵图片就可拖放到 ImageSource Image 中了。

转换方法为:在 Project 视图中选中要转换的图片,然后在 Inspector 属性面板中,单击 Texture Type(纹理类型)右边的下拉列表,选中 Sprite(2D and UI)并单击下方的 Apply按钮,就可以把图片转换成精灵格式,然后就可以拖放到 Image 的 Source Image 中了。
参数列表

参数 描述
Color 设置应用在图片上的颜色
Material 设置应用在图片上的材质
Image Type 设置贴图类型

UGUI Raw Image 控件
Unity 3D Raw Image 控件向用户显示了一个非交互式的图像,如下图所示。它可以用于装饰图标等。

image.png

Raw Image 控件类似于 Image 控件,但是,Raw Image 控件可以显示任何纹理,而 Image只能显示一个精灵。
参数列表

参数 描述
Texture 设置要显示的图像纹理
Color 设置应用在图片上的颜色
Material 设置应用在图片上的材质
UV Rect 设置图像在控件矩形中的偏移和大小,范围为0〜1

UGUI Button 控件
除了公共的 Rect TransformCanvas Renderer 两个 UI 组件外,Unity 3D Button 控件还默认拥有 ImageButton 两个组件,如下图(a)所示。

Image 组件里的属性与前面介绍的是一样的。Button是一个复合控件,其中还包含一个 Text 子控件,通过此子控件可设置 Button 上显示的文字的内容字体文字样式文字大小颜色等,与前面所讲的 Text 控件是一样的。

Button 控件属性
  1. Interactable(是否启用交互)。
    如果把该选项取消,则该 Button 在运行时将不可点击,失去了交互性。

  2. Transition(过渡方式)。
    共有 4 个选项,如下图(b)所示。默认为Color Tint(颜色色彩)。

  • None:没有过渡方式。
  • Color Tint:颜色过渡,相关属性参考下文列表。
  • Sprite Swap:精灵交换,需要使用相同功能、不同状态的贴图,相关属性参考下文列表。
  • Animation:动画过渡。
    image.png

Color Tint 属性

属性 描述
Target Graphic 设置目标图像。
Normal Color 设置正常颜色。
Highlighted Color 设置高亮色。
Pressed Color 设置单击色。
Disabled Color 设置禁用色。
Color Multiplier 设置颜色倍数。
Fade Duration 设置变化持续的时间。

Sprite Swap 属性

属性 描述
Target Graphic 设置目标图像。
Highlighted Sprite 设置鼠标经过时的贴图。
Pressed Sprite 设置单击时的贴图。
Disabled Sprite 设置禁用时的贴图。

UGUI Toggle 控件
Unity 3D Toggle控件也是一个复合型控件,如下图所示。它有 BackgroundLabel 两个子控件,而 Background控件中还有一个 Checkmark子控件。

Background是一个图像控件,而其子控件 Checkmark也是一个图像控件,其 Label控件是一个文本框,通过改变它们所拥有的属性值,即可改变 Toggle 的外观,如颜色字体等。

image.png

参数列表

属性 描述
Is On 设置复选框默认是开还是关。
Toggle Transition 设置渐变效果。
Graphic 用于切换背景,更改为一个更合适的图像。
Group 设置多选组。

UGUI Slider 控件
在游戏的 UI 界面中会见到各种滑块,用来控制音量或者是摇杆的灵敏度。

Unity 3D Slider控件也是一个复合控件,Background 是背景,默认颜色是白色,Fill Area 是填充区域,如下图所示。

image.png

Slider 控件的一个需要注意的参数是 Whole Number,该参数表示滑块的值是否只可为整数,开发人员可根据需要进行设置。

除此以外,Slider 控件也可以挂载脚本,用来响应事件监听。

参数列表

属 性 描述
Fill Rect 设置填充矩形区域。
Handle Rect 设置手柄矩形区域。
Direction 设置 Slider 的摆放方向。
Min Value 设置最小数值。
Max Value 设置最大数值。
Value 设置滑块当前的数值。

UGUI Scrollbar 控件
Unity 3D Scrollbar(滚动条)控件可以垂直或水平放置,主要用于通过拖动滑块以改变目标的比例,如下图所示。

它最恰当的应用是用来将一个值变为指定百分比,最大值为1(100%),最小值为0(0%),拖动滑块可在0和1之间改变,例如改变滚动视野的显示区域。

image.png

参数列表

属 性 描述
Handle Rect 设置最小值与最大值之间的范围,也就是整个滑条的最大可控制范围。
Direction 设置滚动条的方向为从左至右、从上至下或其他的方向。
Value 设置当前滚动条对应的值。
Size 设置操作条矩形对应的缩放长度,即 handle 部分的大小,取值为 0〜1。
Numbers Of Steps 设置滚动条可滚动的位置数目。
On Value Changed 设置值改变时触发消息。

UGUI Input Field 控件
Unity 3D Input Field 控件也是一个复合控件,包含 PlaceholderText 两个子控件,如下图所示。

其中,Text是文本控件,程序运行时用户所输入的内容就保存在Text控件中,Placeholder 是占位符,表示程序运行时在用户还没有输入内容时显示给用户的提示信息。

image.png

Input Field输入字段组件与其他控件一样,也有Image(Script)组件,另外也包括 Transition 属性,其默认是 Color Tint,如下图所示,具体属性如下表所示。
参数列表

属 性 描述
Interactable 设置是否启用 Input Field 组件。勾选表示输入字段可以交互,否则表示不可以交互。
Transition 设置当正常显示、突出显示、按下或禁用时输入字段的转换效果。
Navigation 设置导航功能。
Text Component 设置此输人域的文本显示组件,用于显示用户输人的文本框。
Text 设置此输入域的初始值。
Character Limit 设置此输人域最大的输入字符数,0 为不限制输入字符数。
Placeholder 设置此输入域的输人位控制符,对于任何带有 Text 组件的物体均可设置此

另外还有两个较为特殊的参数:

1.Content Type 属性。
输入此输入域的内容类型,包括数字、密码等,常用的类型如下:

  • Standard:允许输入任何字符,只要是当前字体支持的即可。
  • Autocorrected:自动校正输入的未知单词,并建议更合适的替换候选对象,除非 用户明确地覆盖该操作,否则将自动替换输入的文本。
  • Integer Number:只允许输入整数。
  • Decimal Number:允许输入整数或小数。
  • Alpha numeric:允许输入数字和字母。
  • Name:允许输入英文及其他文字,当输入英文时能自动提示姓名拼写。
  • Email Address:允许输入一个由最多一个 @ 符号组成的字母数字字符串。
  • Password:输入的字符被隐藏,只显 7K 星号。
  • Pin:只允许输入整数。输入的字符被隐藏,只显示星号。
  • Custom:允许用户自定义行类型、输入类型、键盘类型和字符验证。
    image.png

Line Type 属性
设置当输入的内容超过输入域边界时的换行方式:

-Single Line:超过边界也不换行,继续向右延伸此行,即输入域中的内容只有一行。

  • Muhi Line Submit:允许文本换行。只在需要时才换行。
  • Multi Line Newline:允许文本换行。用户可以按回车键来换行。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容