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 update void Start() { text.color = Color.red; text.fontSize = 3;//返回一个整型值设置现实的字体大小 text.lineSpacing = 1.6f; //行间距,指定为字体行高的一个因素。值1将产生正常的行间距。 text.font = new Font("andlso"); } // Update is called once per frame void 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 CenterImage的背景颜色是否充满Character Limit输入文本中的最大数字数-Content Type--文本的模式有正常、Email address、passed world等状态用来输入正常的文本内容或者电子邮件的地址,密码等如果选择的是密码,当用户输入的时候回自动的将用户输入的文本变成*用来隐藏-Caret Blink Roat用户输入文本时光标显示的速度Caret Width光标的宽度-Custom Caret Color--光标的颜色-