说在前面:UI元素在Canvas里的绘制顺序和在Hierarchy面板中的排列顺序是一样的,排名在上面的对象首先绘制,然后是第二个第三个,以此类推,如果两个UI原色有重叠的部分,之后绘制的元素会挡在先绘制的元素的上面。
Canvas:UGUI中的一个重要组成部分就是Canvas,它是一个游戏对象,所有的UI都是Canvas的一个子对象,如果场景中不存在Canvas,当用户创建UI元素的时候,系统会自动的创建一个Canvas对象。
Render Modes:(渲染模式),渲染模式共分为三种,一种是Screen Space-overlay,一种是Screen Space-Camera第三种World Space.
Screen Space-overlay :该模式是默认的渲染模式,在该模式下,所有的UI元素都渲染到最上层(类似于手机上的贴膜),如果屏幕的尺寸或者fenbianlv发生改变,Canvas也会自动的和变化后的尺寸相对应。
Screen Space-Camera:在该模式下,Canvas游戏对象放置在一个预先设置好的摄像机的特定距离之外,UI元素通过该摄像机进行渲染,注意:在使用该渲染模式,应该创建一个摄像机并将其指定给Canvas组件下的Rand而Camera,当改变该摄像机的蛇值,UI元素的显示效果也会跟着改变。
World Space:该模式会是游戏对象更加形象,可以手动的改变RectTranform组件,从而更改其大小和控制旋转,在渲染的时候,UI元素会根据他们在3D场景中的位置被渲染在其他游戏物体之前或者之后,使其成为游戏视图的一部分
注意:在Screen的的两种模式下,UI独立于游戏场景,不会被场景中的对象遮盖
RecTranform:Canvas会自带 一个RectTranform,该组件继承与Transform,用于控制Transform信息
参数:
posX、posY、posZ | 控制UI元素的位置 |
---|
pivot | 控制UI元素的中心 |
Scale | 控制UI元素的尺寸 |
Anchors | 相对于父对象的锚点 |
Width、Height | 控制UI的长度和宽度 |
Panle控件:
它是一个覆盖于整个屏幕的平面,一般可以用来填充UI的背景。注意:Panle控件会自动的适应当前屏幕的尺寸,所以不用担心适应的问题
Button:它是界面的 重要组成元素之一 ,按钮上挂在的Button组件实现了按钮的 全部功能,,包括单击之后的特效,单击事件的监听,
里面的哥哥参数的含义以及定义
参数:
Interactable | 该按钮是否被启用 |
---|
Transition | 该按钮的状态的变换模式 |
Navigation | 导航使用键盘防线切换选中按钮时的切换顺序 |
-Visualize- | -可视化,使Navigation可视化- |
Button组建中的Transition过度选项定义了四种过度模式,分别为None、ColorTint、Sprite Swap、Animation
(1) Color Tint:使用该模式的时候,可以通过Color属性对按钮的四种状态进行设置,在对应的状态下颜色会发生改变,比如按下,抬起等状态
(2)Sprite Swap:该过度模式为精灵配图,如按下按钮时一张图,抬起的时候又是另一张图等
(3)Animation:UGUI的特色,它可以使UGUI系统与动画系统结合起来,使用动画状态机可以对不同状态下的按钮进行位置,大小旋转的图片等参数进行设置
下面来举个例子,我们先要的效果是店家按钮的时候,让按钮缩放
先在界面中创建一个Button,将Button组件中的Tran四通选项选择成Animation 点击下面 Auto Generate Animation 保存
点击Window-> Animation
将状态选择成Press
添加RectTransform,然后编辑它的x、y、z的大小
这样就完成了点击按钮实现缩放的效果。
在Button中,还有一个非常强大的功能就是添加监听,添加监听的功能实现很简单,创建一个c#脚本,在脚本中编辑如下代码
public void onBtClick(){Debug.Log("点击事件");}
然后将脚本添加到Canvas中在Button中点击+将Canvas拖放到相应位置选中要监听的事件
Text控件:
参数:
Text | 显示的文本 |
---|
Font | 需要选用的字体 |
Line Spaceing | 行间距 |
-RichText- | -是否为多格式文本- |
Material | 字体材质 |
FontStyle | 字体的样式,包括加粗、斜体等 |
-FontSize- | -字体大小- |
Color | 字体颜色 |
下面演示一个简单的部分功能的使用方法
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class TextText : MonoBehaviour
{public Text text;// Start is called before the first frame updatevoid Start(){text.color = Color.red;text.fontSize = 3;//返回一个整型值设置现实的字体大小text.lineSpacing = 1.6f; //行间距,指定为字体行高的一个因素。值1将产生正常的行间距。text.font = new Font("andlso");}// Update is called once per framevoid Update(){}
}
Unity支持导入外带的字体包,TTF格式的字体一般都可以使用,使用方法是将下载好的TTF文件放在项目目录下的Asset\Font
目录下(没有的花自己创建),在字体的Font参数中就可以找到导入的字体了
Image:是一个非交互的精灵图片,设置精灵图片的步骤是,选中要设置的图片,将图片的TexTure设置成Sprite(2DandUI)然后点击应用,若想应用到Image上,设置精灵之后拖拽到Source Image上即可
Image的参数:
Source image | 设置要显示的精灵图片 |
---|
Color | 设置图片背景的颜色 |
Material | 渲染图片的材质 |
-Raycast Target- | -是否将此图像设置成射线投射的目标(是否可以检测到)- |
Preserve Aspect | 是否保持图像现有的尺寸 |
Set Native | 使用此按钮会将图像框的尺寸设置成原始像素的大小 |
RawImage : 它与Image的区别是,前者只能设置精灵图片,而后者可以设置任何纹理
Slider:选择GameObject->UI->Slider创建一个滑块控件
在滑块控件中:Background是设置滑块的背景,也就是下面的黑色部分
Fill Area的子对象Fill是被填充的样式,也就是下面的白色部分
Handle Slider Area的子对象是用户可以滑动的那个滑块
Slider的参数:
Transition | 过度模式其中包含Color Tint、Sprite Swap等模式这在上面已经提到这里不再赘述 |
---|
Navigation | 导航,使用键盘方向键切换选中按钮时的顺序,关于导航系统会在下一篇文章中整理 |
visualize | 可视化,是Navigation的路线可视化 |
-Direction- | -滑块的滑动方向- |
Max Value | 滑块的最大值 |
value | 滑块当前的值 |
-MinValue- | -滑块的最小值- |
Whloe Number | 设置滑块的值是否只能是整数 |
Toggle组件:实现开关功能的组件
创建一个Toggle之后,可以看到他的子对象其中BackGround的相关参数与Scrollbar类似。
Checkmark是开关的背景在其中可以设置背景的图片与开关的样式。
Label 是一个Text组件,其中可以设置开关处显示的字和相关的一些设置。
关于将怎样将多个Toggle设置成一个组的实例
首先在Canvas下创建一个空对象,用于管理多个Toggle组件
在Empty GameObject上添加一个Toggle group组件,在Toggle group组件中有一个Allow Switch off组件,选中时,当用户选中了某一个开关可以再次点击取消选择反之则不行
在创建的空物体下创建三个Toggle将三个对象的group设置成EmptyGameObject即可
组件:
IsOn | 开关的状态 |
---|
Toggle Transform | 开关的消音模式,有none和Fade(褪色消隐)两种模式 |
Toggle也同样可以添加事件监听,具体在上篇中有记录
Input Fiedl:这个空间是UGUI中的文本框控件,常用来游戏中给人物取名用,当用户在移动设备中点击这个文本框中,会自动弹出用于输入的键盘,在它的子对象中Placeholder用于显示默认提示信息的文本框,Text则显示用户输入的详细,如果想要修改默认的文本消息的时候,可以直接谢盖Placeholder中的文本消息
参数:
Image Type | 用户输入时显示的格式 |
---|
Fill Center | Image的背景颜色是否充满 |
Character Limit | 输入文本中的最大数字数 |
-Content Type- | -文本的模式有正常、Email address、passed world等状态用来输入正常的文本内容或者电子邮件的地址,密码等如果选择的是密码,当用户输入的时候回自动的将用户输入的文本变成*用来隐藏- |
Caret Blink Roat | 用户输入文本时光标显示的速度 |
Caret Width | 光标的宽度 |
-Custom Caret Color- | -光标的颜色- |