1. 对文本元件使用这个字体(或设置为全局字体)即可。

从以上步骤可以看出,在FairyGUI中可以轻松切换文本是否使用TextMeshPro。

当文本使用了TextMeshPro字体后,文本的属性会增加额外的选项,见下图:

Unity默认panel背景background图片更换 unity怎么换背景_游戏引擎

自行调整一下各个属性,通过实际效果感受其作用。通常建议当描边增大时,扩张值也应该同时调大。

在Unity引擎里还需要做些特别的处理:

  1. 确认安装了TextMeshPro插件。
  2. 将ttf文件拖入Unity编辑器,一般放置Resources目录或者Resources/Fonts目录最简单。
  3. 为ttf文件创建一个TextMeshPro FontAsset。通常,创建出来后的Asset的名字是’XXX SDF’,我们需要把名字改成’XXX‘,以便和FairyGUI编辑器里的资源名字一致。
  4. 配置这个FontAsset的Sampling Point Size与FairyGUI编辑器里的采样字体大小一致。

组(普通组和高级组)

把分散的物品结合成一个整体,移动复制缩放隐藏等操作都是共同的。后续动作都将针对整体进行。后续动作也分为在FairyGUI编译器中的动作和Unity中代码操作。这俩操作又引申出普通组和高级组。

普通组是在FairyGUI编译器中你在开发编辑的时候生效,帮你快速布局,铺设UI,在发布后和运行都不存在了,你就没办法把她当成一个整体操作了。

高级组就不一样,光听名字就知道这功能高级,她的优点在于除了在FairyGUI编译器中生效帮助你快速铺设UI,她在发布后仍然保留组关系,比如你用代码修改了高级组的位置,组内的所有元件都会移动。比Android的相对布局,当修改整体组时,组内元件大小对应变化;当组内某个元件变化,其他元件也适应变化。

组件-重点

组件是什么?

你点击资源->新建组件,看看出现什么

Unity默认panel背景background图片更换 unity怎么换背景_游戏引擎_02

这不就是舞台(中央操作区)做布局用的吗?没错,组件就是布局,可以理解为组件就是Unity中的Canvas,Android中的xml布局,那既然是布局,就可以封装布局(封装组件),所以:

  1. 组件可以包含多个元件(布局里面可以包含多个控件),比如舞台中有按钮图片等
  2. 组件可以包含组件(布局可以嵌套布局),比如复用性较高的控件封装一个组件,在主组件中拖入使用
  3. 组件封装后,可以把她整体又当成一个元件

啊,这关系好乱啊,不过仔细想明白后,对FairyGUI的理解就顺畅多了。

来看看组件的属性:

Unity默认panel背景background图片更换 unity怎么换背景_unity_03

  1. 同时作为锚点 勾选这个选项后,元件的原点位置将设置为轴心所在的位置。默认情况下,每个元件的(0,0)都是在左上角;勾选了轴心同时作为锚点后,则元件的(0,0)在轴心的位置。Unity中默认是中心为锚点,这是左上角,保持默认即可。
  2. 溢出处理 设置超出舞台矩形区域的内容怎么显示,有可见,隐藏,垂直/水平/自由滚动
  3. 自定义遮罩 详情看下面遮罩内容
  4. 点击穿透 比如带有透明区域的png图片,默认情况下,空白区域点击事件照样触发,勾选后,透明区域不再响应事件,若项目中需要多个带有透明的PNG重叠且各自触发事件,建议勾选,因为不勾选,虽然能够看到下一层的图片效果,但是点击事件被第一层的透明区域拦截了,无法下发到下一层PNG上。
  5. 扩展 详情看下方扩展介绍
  6. 设计图功能 显示在舞台上,做布局的时候可以参考整体的UI图,就像印着写字帖一样,更快速,更精准的布局,甚至都不用UI进行尺寸标注

自定义遮罩

普通遮罩

可以设置组件内一个图片或者图形作为组件的遮罩。

当使用图形(Graph)作为遮罩时,有图形的区域内容可见,例如,一个圆形,则圆形区域内可见,其他区域不可见。

当使用图片作为遮罩时,图片内透明度为0的像素对应区域的内容不可见,反之可见。超出图片区域的内容不可见。

反向遮罩(挖洞)

效果和正常遮罩相反,也就是可见的区域变不可见,不可见的区域变可见。

使用图形(Graph)作为遮罩时,有图形的区域内容不可见,例如,一个圆形,则圆形区域内不可见,其他区域可见。

使用图片(Image)作为遮罩时,图片内透明度为0的像素对应区域的内容可见,反之不可见。超出图片区域的内容可见。

Unity默认panel背景background图片更换 unity怎么换背景_游戏引擎_04

扩展

这个功能就相当有意思了,刚才我们说了,中央操作区也是一个组件,一个组件就相当于一个页面,一般都是只有一个主页面,当你的页面复杂或者想要分开管理的时候可以创建多个组件,然后放到一个组件里,将这个组将当成主页面。当某个组件(页面)复用性高的时候,这种方法很有用。

Android里面布局代码过多的时候,通常都会提炼出一个布局,或者复用性较高的布局提炼出来(比如APP的标题栏复用很高),这样后续其他布局使用的时候直接使用include关键字直接引入布局,相当便利。

当你选择扩展为“按钮”的时候,会发什么效果?

Unity默认panel背景background图片更换 unity怎么换背景_unity_05

修改保存后妥妥的发现组件的图标变成了按钮的图标;

这时候我就产生疑问了:难道按钮进度条这些都是用组件封装的?

我选择不同的扩展,保存后发现组件的图标会对应修改,表现出的效果相当明显了

  1. 按钮/标签/进度条/下拉框等功能都是组件修改封装而来
  2. 组件就相当于基类,你想要实现其他功能,可以在组件上进行修改封装,之后在主组件(主布局)中使用
  3. 元件包含基础元件/组合型元件/特殊元件,是官方已经封装好的控件,上面元件有分类,组件就包含元件里面的组合型元件,组件还可以凭你的想象自由组合成新控件

滚动容器

对组件或者列表设置了“溢出处理”为“水平滚动”、“垂直滚动”,“自由滚动”后,组件或者列表即成为滚动容器。点击“溢出处理”旁边的

Unity默认panel背景background图片更换 unity怎么换背景_进度条_06

按钮,可以设置详细的滚动的相关属性。

Unity默认panel背景background图片更换 unity怎么换背景_Android_07

  1. 触摸滚动效果 是否允许用户直接拖拽滚动区域内的内容。一般在移动平台上使用,PC上较少,PC上一般需要拖动滚动条,或使用鼠标滚轮。
  2. 滚动条组件 设置滚动条资源。一般不需要设置,全局有一个设置,在主菜单“文件->项目属性->默认值”里。如果你要使用不同于全局设置的滚动条资源,那么在这里设置。
  3. 下拉/上拉刷新组件 设置上拉刷新或下拉刷新时需要显示的组件。一般是你封装好的组件
  4. 页面模式 以视口大小为页面大小,每次滚动的距离是一页。一般在移动平台上使用,PC上较少,拖动滚动条进行滚动操作与这个模式冲突。
  5. 禁用裁剪边缘 一般情况下,视口不包括边缘设置的部分,也即是容器设置四周的留空部分也会被裁剪。如果需要,可以勾选这个选项,使容器四周的留空部分不被裁剪。
  6. 浮动显示 勾选后,滚动条不占据视口的位置,而是直接覆盖在视口上面。例如一个适用于手机的滚动条,它是细条且半透明的,只在滚动时才显示出来,用于提示滚动位置。那么我们把它设置为“浮动”,这样就不会挤占视口的显示空间。

控制器-重点

FairyGUI的核心功能之一,提供了几个需求支持:

  1. 分页 一个组件可以由多个页面组成。
  2. 按钮状态 按钮通常有按下、鼠标悬浮等多个状态,我们可以利用控制器为每个状态安排不同的显示内容。
  3. 属性变化 利用控制器,我们可以使元件具有多个不同的形态,并且可以方便地切换。

每个组件可以创建多个控制器,且互不影响

Unity默认panel背景background图片更换 unity怎么换背景_ui_08

在组件中点击添加控制器会跳出创建框

名称       为控制器名称,同一个组件内的不要同名

备注名    帮助你理解的注释名,会和下方的导出为组件属性联合使用,勾选导出为组件属性,当你将这个组件拖动到其他的组件上时,右侧属性区会显示

页面       你可以理解成状态,既然是控制器,就要控制出效果,比如按钮(滑过/点击/抬起等状态),设置不同的动作效果

你可以单独新建按按钮看看,按钮的上方就有一个默认名为button的控制器,有4个状态(页面)

属性控制       创建好控制器后,想要使用她,你选中一个元件,在右侧属性栏会有“属性控制”面板,隔这选择即可。她有显示/位置/大小/颜色/外观/动画/文本等控制。

Unity默认panel背景background图片更换 unity怎么换背景_unity_09

她还可以实现联动效果:

  1. 与按钮联动,当点击不同按钮后,跳转不同页面
  2. 与列表联动,就像Android的列表一样点击一个item显示出对应索引的页面
  3. 与下拉框联动,效果同上

具体效果我们会在后续的实际案例中学学习

关联系统

不管是前端还是移动端或者PC端,应该都有这种相对布局体系。

比如移动端的相对布局(RelativeLayout)

Unity默认panel背景background图片更换 unity怎么换背景_Android_10

FairyGUI任何元件可以互相关联,在右侧有关联选项,可以实现布局自适应,对话框自适应,动态变化的内容等。

Unity默认panel背景background图片更换 unity怎么换背景_Android_11

比如:玩游戏的时候有全屏或者小屏的时候,界面大小修改后UI布局仍然保持的相当好,想想当年天龙八部窗口化UI布局就是这种机制。

Unity默认panel背景background图片更换 unity怎么换背景_ui_12

按钮和下拉框

常用的基础组件,传统UI框架中的RadioButton、Checkbox、List Item等,在FairyGUI里通通都是按钮。

这里注意下要想改变按钮不同状态的效果,需要先在右侧属性控制中选择控制器

下拉框的创建已经很简单了

Unity默认panel背景background图片更换 unity怎么换背景_ui_13

提前切好图,按照三部曲即可创建出来,创建好后会有三个文件

Unity默认panel背景background图片更换 unity怎么换背景_ui_14

Item是下拉框内容item,双击进去后还可以自定义里面的内容

Popup是列表控件,同样可以双击进去自定义

Unity默认panel背景background图片更换 unity怎么换背景_进度条_15

除了在这编辑,列表需求多数都是请求自动变化的,FairyGUI同样支持代码中设置item集合内容,和传统集合一样,要想访问集合中的item通过索引即可从0开始。有一点不同的就是上图的“值”(索引),你不写的话默认从0开始。当你修改后就需要索引值就是你修改的。比如上图,我如果没修改访问叮叮当1 就是getIndex(0),当时我把值修改为1了,访问叮叮当就是getIndex(1)

还有更多按钮详情(状态分析普通按钮selected属性无效,单选按钮组的多个实现普通按钮方式 控制器+单选按钮连接方式)讲解在……,我还没上传,回头小空发布后更新出来链接。

进度条/滑动条/滚动条

进度条

可以改变元件的宽度/高度/填充比例,分为横向和纵向,还有正向和反向;创建也很简单,一个进度条背景,一个伸缩条即可。

如何显示进度条当前进度?

Unity默认panel背景background图片更换 unity怎么换背景_ui_16

双击进入进度条,添加个文本控件,然后名称改为“title”,要想和进度条最右侧实时跟随移动,设置关联即可。

Unity默认panel背景background图片更换 unity怎么换背景_unity_17

如何实现带有跟随动画的进度条?

细心的朋友发现了,还有个小狐狸跟随进度条,平时玩游戏切换场景的时候经常看到进度条不是单调的横线,还有些小动画跟随,增强灵动性。

这个实现和上面的文本添加类似,区别在于你要想拖入动画的话,可以在编辑进度条的时候增加个装载器,装载器放入动画文件,想要和进度条进度试试跟随的话,再设置小狐狸和进度条的伸缩条的关联设置为右右关联

如何监听进度条?

进度条最大的作用就是和程序相结合,用于加载中,流程进度节点等,所以我们要能修改和监听进度条

Unity默认panel背景background图片更换 unity怎么换背景_unity_18

滑动条

她和进度条就像双胞胎一样相似,但是她多出个按钮让用户自己拖动改变进度值。

创建也很简单点击资源->新建滑动条按照提示添加即可