FairyGUI个人学习手册——只有重点(2)

本文详细介绍了FairyGUI中3D内容装载器、文本及富文本的属性与模板,输入文本的设置,字体管理,组与组件的使用,以及滚动容器、控制器和关联系统的功能。特别是文本模板、富文本的HTML语法支持和高级组的布局功能,以及TextMeshPro在FairyGUI中的集成和滚动容器的滚动效果设置。
摘要由CSDN通过智能技术生成

3D内容装载器

动态载入骨骼动画的,用的少,略。

文本

实例属性

在这里插入图片描述
文本为单行,不会自动换行,就算有换行符也被忽略。
字体大小:如果使用位图字体,要先设置“允许动态改变字号”。
颜色:位图字体同上,“~~~~颜色”。
自动大小:

  • 自动宽度和高度:文本不自动换行,宽度和高度都增长到容纳全部文本。
  • 自动高度:到达宽度后自动换行,高度增长到容纳全部文本。
  • 自动收缩:到达固定宽度后自动缩小,让所有文本全部显示。
  • 显示省略号:文本使用固定宽度和高度排版,如果文本超出范围,在剪裁文本的同时在末尾显示省略号。
  • 无:文本使用固定宽和高,不自动换行。
    描边:文本的描边效果,数值不能过大,否则会比较奇怪。编辑器效果仅供参考。
    投影:简化的描边效果,描边是所有方向,投影只有一个方向。两者共用一个颜色设置。

文本模板

在编辑器中放置一个文本控件,比如文本为“金钱:{jin=100}金{yin=200}银”,然后勾选“使用文本模板”就好。这样编辑器显示“”“金钱:100金200银”,可以通过以下代码动态更新数值

 aTextField.SetVar("jin", "500").SetVar("yin", "500").FlushVars();

也可批量设置:

   Dictionary<string, string> values;
    values["jin"] = "500";
    values["yin"] = "500";
    //注意,这种方式不需要再调用FlushVars
    aTextField.templateVars = values

启用文本模板功能,不用设置开关,直接调用SetVar,想要关闭文本模板的时候:

aTextField.templateVars = null;

富文本

和普通文本的区别:

  • 富文本支持交互
  • 富文本支持连接和图文混排
  • 富文本支持HTML语法。

输入文本

实例属性

详细设置:

  • 最大长度:输入最大字符数。
  • 密码:勾选后输入字符将显示成*。
  • 输入限制:限制用户输入字符,在Unity上参考正则表达式语法。例如限制只能输入数字的表达式是:“[0-9]”。
  • 键盘类型:
  • 提示文字:

字体

系统字体

当前系统中安装的字体,需要注意:
1.本机存在的字体其他电脑上未必有,效果预期会不一样。
2.编辑器和游戏引擎可能无法设别部分字体的名字。

TTF字体

将字体文件拖入编辑器,成为字体资源,后缀名为ttf/ttc/otf的文件。无论字体是否设置未导出,它都不会被发布。UI包发布后,引用此字体的文本元件字体名称是该字体的资源名字。比如:一个文本元件,字体设置为B包的a资源,发布后,它的字体就是a,而不是ui://B/a。
使用者需要手动把字体放到游戏引擎里面去,建立字体映射。
Unity的话就放在Resources文件夹或者打AB包,具体操作如下:

  //如果afont是放在Resources的子目录下
  FontManager.RegisterFont(new DynamicFont("afont",
   Resources.Load("path/to/font"));

  //如果afont打成了AB
  DynamicFont font = new DynamicFont();
  font.name = "afont";
  font.nativeFont = fontLoadFromAB;
  FontManager.RegisterFont(font);

TTF字体资源的属性窗口,有以下内容需要注意:
系列:字体名称,只读。
采样字体大小:渲染方式“SDFAA”才有意义,其他默认16。
渲染方式:

  • Smooth 抗锯齿字体渲染。
  • Hinted Smooth 带有微调的抗锯齿字体渲染。
  • SDFAA 使用SDF技术渲染文字。
    斜体样式:渲染SDFAA时才显示,斜体时文字倾斜角度。有效值15-60。
    粗体分量:同上,用粗体的量。有效值-3-3。

位图字体

位图设置界面介绍:

  • 图片:略
  • 字符:略
  • 偏移X:水平方向上该字符的偏移,负数左,正数右。
  • 偏移Y:垂直方向上该字符的偏移,负数上,正数下,因为文字排版基线对齐,可能整行都发生下移。
  • 占位:一般来说,字符的水平占位宽度就是图片的宽度决定。如果不是0,设置好多就是好多。
  • 字体大小:字体字号,勾允许动态改变字号才有效。
  • 默认占位:统一设置所有字符占位。
  • 允许动态改变字号:略。
  • 允许动态改变颜色:略。
  • 纹理集:如果是BMFont导入,字符图片都在一张贴图上,这里对应贴图资源。

全局字体

设置好后,文本元件的字体属性留空的,默认使用该字体。
运行时设置:

    //Droid Sans Fallback是安卓上支持中文的默认字体
    UIConfig.defaultFont = 'Droid Sans Fallback'; 

TextMeshPro支持

Untiy中的TextMeshPro,它用的SDF渲染文字,实际使用中特点体现在可无限放大并保持清晰,几乎没有开销就可实现描边,发光,抗锯齿。FGUI内置支持使用TextMeshPro插件。
步骤如下:
1.导入ttf/ttc/otf文件。
2.设置字体为SDFAA,字体大小根据项目需求来定,越大渲染效果越好,一张贴图容纳的文字越少。一般30-90。
3.给文本设置字体。
设置好了文本中的属性栏会变化。
Unity中的设置:
1.安装了TextMeshPro。
2.在Unity的Scripting Define Symbols里增加FAIRYGUI_TMPRO。
3.ttf文件拖进去。
4.ttf文件创建一个TextMeshPro FontAsset。通常创建出来的Asset名字为“XXX SDF”,把名字改成XXX,和FGUI里面资源同名。
5.配置这个资源的Sampling Point Size与FGUI里面采样字体一致。
编辑器的显示效果和Unity里完全一致,不一致就是参数不对。
AB包载入

 //假设fontAsset已经从ab载入
  TMP_FontAsset fontAsset;
  TMPFont font = new TMPFont();
  font.name = 'afont'; //这个名字要和编辑器里字体资源的名字一致
  font.fontAsset = fontAsset;
  FontManager.RegisterFont(font);

绑定多个元件。

普通组

编辑时有效辅助设计,打包发布后就不在了,运行时无法访问。
作用:整体移动,整体深度调整,整体复制粘贴,组内部随意调整各个元件深度,组大小改变时组员同时变化。

高级组

具有普通组的所有功能,且发布后仍然保留,运行时也可以访问。
其作用为:
1.可以设置可见性。
2.设置属性控制。支持:显示控制,位置控制,大小控制。
3.设置关联。
4.设置布局。
重点说一下属性面板中的布局

  • 无:没有布局。没有布局的高级组是不会自动计算包围的,为了提高运行性能,没有布局的一般只用来做显隐用途。
  • 水平布局:组内的元件按照他们在容器中的显示顺序水平依次排列,他们之间的间隔由列距指定。当组的宽度改变时,每个元件都按比例增大,然后重新排列,列距保持不变。当组内的元件自身的宽度改变时,组自动按规则重新排列。
  • 垂直布局:组件的元件按照他们在容器中的显示顺序垂直依次排列,他们之间的间隔由行距指定。当组的高度改变时,每个元件都按比例增大,然后重新排列,行距保持不变。当组内的元件自身的高度改变时,组自动按规则重新排列。

排除隐藏的对象:勾选之后,隐藏对象不会参与排列。
禁用自动计算包围:一般高级组的范围是自动计算包围的,高级组大小由组内元件决定。勾了可以自由指定大小,不受组内元件影响。使用实例:动态创建高级组,设定大小,无论往组里添加多少元件,这些元件都会自动伸缩且严格按布局排列。
仅伸缩指定索引元件:高级组中所有元件均匀拉伸。可以指定只有一个元件变化,其他不变。这里可以指定一个元件的索引实现需求。

组件

组件是FairyGUI中的一个基础容器。可以包含多个基础显示对象,也可包组件

组件属性

尺寸:宽和高。
最小/最大尺寸:尺寸限制。修改此处不会修改当前宽高,即使超出。
轴心:旋转、缩放、倾斜变换的轴心点。
同时作为锚点:略。
初始名字:在编辑器中被实例化时,自动设置组件的名称就是用这个名字。
溢出处理:超出组件区域外的内容处理。不能动态修改。

  • 可见:超出部分依然可见。
  • 隐藏:超出部分不可见,相当于用了一个遮罩。
  • 垂直滚动/水平滚动/自由滚动:FGUI中任何普通组件,设置了滚动功能就可以实现滚动。
    边缘:设定组件四周的留空。一般用在“隐藏”和“滚动”。边缘虚化只能在Unity用。
    自定义遮罩:略。
    。。。。

其他属性

自定义属性:组件被拖到其他组件中去,检查器上能设置的属性一般是固定的。例如一个按钮,我们可以改变它的标题、图标、是否选中等,这些都是编辑器提供的固定属性。但如果我在按钮中放置了额外的文本或者装载器,而且需要设定他们在实例化后的属性时,就需要用自定义属性,将组件的子元件甚至更深层次的元件的属性暴露出来。
在自定义属性旁点击编辑弹出窗口。

  • 元件名称:元件的名称,可以用.来向下层级移动。
  • 属性类型:目前支持两种:文本和图标。
  • 备注:略。
    拖进其他组件就可以看到其他组件上出现自定义的属性了。仅限编辑器,运行时GetChild就可以。
    自定义数据,FGUI不做解析,按原样发布,运行时可以获取:
 aComponent.baseUserData;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值