UGUI是从Unity4.6开始被集成到Unity编译器中的官方UI系统,具有灵活,快速和可视化兼容性好的特点。以下为常用的UGUI控件:
创建UI控件时,如果没有Canvas和EventSystem系统会自动创建。 Canvas画布,是所有UI控件的根类,所有UI控件都必须在Canvas上绘制。如果UI控件不在Canvas下,将无法正常渲染显示。 EventSystem则负责处理UI控件的操作。
所有的UI控件都有一个RectTransform组件,继承自Transform。 RectTransform:
Position, size, anchor and pivot information for a rectangle.
矩形的位置、大小、锚点和枢轴信息。
Transform:
Position, rotation and scale of an object.
物体的位置、旋转和比例。
因为没有专业的美工,网上的素材也很难找,免费的不尽人意,收费的买不起,最后还是采用文字标题。UGUI自带Text控件,用于显示文本: Text:显示的文本 Character(字符) Font:字体 Font Style:字体格式,粗体,斜体 Font Size:字体大小 Line Spacing:行间距,设置为0,存在多行时,将出现重叠 Rich Text:富文本,在Text中输入<color=red>New Text,将显示红色的字体New Text Paragrahp(段落) Alignment:文本在控件中的对齐方式 Align By Geometry:使用字形几何的范围来执行水平对齐而不是字形度量 Horizontal Overflow:水平溢出(Wrap,Overflow,设置为Overflow后,文本长度超出控件宽度正常显示) Vertical Overflow:垂直溢出(Truncate,Overflow) Best Fit:最佳适配,勾选后,将可以设置字体的大小范围,当Text文本增加时,会自动缩小字体;当调节Text大小时,文字大小随着改变。勾选后,设置Font Size将无效 Color:字体颜色 Material:材质
不过text本身功能不够丰富,作为标题美观度不够,因此我们引入TextMeshPro插件。以前的Unity版本可能要去商店下载,我这个自带了。从菜单栏Window > Package Manager中安装TextMesh Pro,第一次创建时,会弹出一个提示窗口: 第一个是必要资源,第二个是可选的,这里我们全安装上。 UGUI的Text使用了一张字体贴图,Unity把所有需要显示的字符放到了一张图集中,字符的形状是通过像素定义的。当我们放大时,像素不够用就会出现文字变模糊的情况。 TextMesh Pro的Text使用了不同的技术来渲染文字,使用这种技术字符在渲染时不会因为缩放而造成字符模糊的情况,总是能够准确的渲染字符的边缘。这样更加美观
经过一些调整设置后就有了我们的标题。
button组成
Interactable:是否交互 Transition:过渡方式 有四种模式 1 None:无过渡 2 Color Tint:颜色过渡 Target Graphic:作用目标 Normal Color:默认颜色 Highlighted Color:高亮颜色,选中或鼠标进入 Pressed Color:按下颜色 Disabled Color:禁用颜色 Color Multiplier:颜色切换系数,系数越大变化越快 Fade Duration:淡出持续时间,颜色过渡时间 3 Sprite Swap:图片切换 Target Graphic:作用目标 Highlighted Sprite:高亮图片 Pressed Sprite:按下图片 Disabled Sprite:禁用图片 4 Animation:动画 Normal Trigger:默认触发器 Highlighted Trigger:高亮触发器 Pressed Trigger:按下触发器 Disabled Trigger:禁用触发器 Auto Generate Animation:自动生成动画控制器,添加成功自动添加Animator组件
Navigation:导航设置
首先要写编写按钮点击事件,再绑定到一个物体上 然后点击+号,再拖拽刚才的物体,最后选择按钮点击事件,即可完成一次事件绑定。 这里我创建三个按钮,分别用来完成进入AR界面,切换设置菜单,退出程序的功能。 以下是脚本。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; public class MainMenu : MonoBehaviour { public void Visit() { //SceneManager.LoadScene("HelloAR"); SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex+1); //用场景名或当前场景的下一个序号完成切换 } public void Exit() { //Debug.Log("Exit"); Application.Quit(); } }我和队友是两个场景在切换时可以直接用场景名也可以按序号,在编译设置时后面的序号就是场景序号。 以上是初步工作。