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;