21.FGUI基础-控件-文本-字体的处理
21.1 知识点
FairyGUI支持的字体
系统字体(不建议使用)
可能存在的问题:
- 如果使用系统字体,在别人的电脑或设备上可能找不到相同的字体,导致效果与预期不同。
- 编辑器和游戏引擎可能无法识别某些字体的名称。
TTF字体(最常用)
将后缀为ttf/ttc/otf的字体文件拖入到编辑器资源中,直接使用他们
TTF字体注意事项
- 发布后,字体文件不会被发布。
- 我们需要手动将字体文件放置到引擎中,并建立字体映射。
- 在 Unity 中,将字体放置在 Resources 或者 Resources/Fonts 目录下,就无需额外的代码进行注册。
- 如果字体文件不在这个路径下,需要使用代码进行注册处理。
TTF字体设置相关参数
- 双击自己文件弹出窗口
- 系列:字体名称,只读
- 采样字体大小:渲染方式为SDFAA才有意义,其它方式使用默认值16即可
- 渲染方式:
- Smooth:抗锯齿,建议使用
- Hinted Smooth:比Smooth更清晰,速度较慢,较小字体建议使用
- Hinted Raster:光栅化渲染 精细度最高 性能消耗最大
- SDFAA:使用SDF技术渲染字体,TextMeshPro时可使用
- AltasPadding:SDFAA时才有,图集的渲染距离
- 斜体样式:SDFAA时才有,使用斜体时的倾斜角度15~60
- 粗体分量:SDFAA时才有,使用粗体时,粗体的重量,-3~3
关于TextMeshPro的支持
- 要在设置中将字体的渲染方式设置为SDFAA即可
- Unity中导入了TextMeshPro插件,就能正常显示
位图字体(特殊需求时使用)
位图字体就是使用图片来表示某个文字
创建位图字体
点击创建位图字体,会弹出一个窗口 让我们拖入图片 编辑位图字体
位图字体设置窗口相关参数
- 拖入对应图片
- 图片:对应资源库中的一张图片
- 字符:该图片对应的字符
- 偏移XY:在水平和垂直方向上字符的偏移
- 占位:如果为0使用图片的宽度,如果不为0使用这里填写的值作为水平占位宽度
- 字体大小:位图字体的字号,勾选动态改变字号后生效
- 默认占位:统一设置所有字符的默认占位宽度
- 允许动态改变字号:勾选后,字体大小使图片可以缩放,如果不设置时钟显示图片原本大小,不会缩放
- 允许动态改变颜色:勾选后可以改变颜色,不勾选始终使用图片颜色
- 第三方位图字体制作工具
- 也支持类似NGUI中使用第三方位图字体制作工具
- 可以使用BMFont生成的文件,格式只支持fnt文件
- 生成后,编辑器导入素材,选择fnt文件即可
Unity使用TTF字体的注意事项
导入字体到Unity工程
需要自己导入字体文件到工程中,建议直接放入Resources目录或其Fonts子目录下,放到这两个路径下,FGUI会自动帮助我们进行字体注册
注意:默认字体不会正常显示 因为在FGUI设置的默认字体在发布Unity后不会生效 需要添加UIConfig组件 在UIConfig组件添加默认字体
默认字体需要自己手动设置
//注意:设置默认字体 要在显示面板之前
//如果是放置在指定文件夹下 那么直接填写字体名即可
UIConfig.defaultFont = "STHUPO";
//如果没有放到指定路径Resources目录或其Fonts子目录下 设置默认字体要指定文件夹路径
UIConfig.defaultFont = "Other/STHUPO";
字体文件放置在AB包中或者Resources下其他目录下
//3.如果字体文件放置在AB包中或者Resources下其他目录下,需要手动自己注册
//手动从对应位置加载字体文件 传入路径
Font font = Resources.Load<Font>("Other/STCAIYUN");
//然后申明一个 动态字体类型对象
DynamicFont dFont = new DynamicFont("STCAIYUN", font);
//注册它
FontManager.RegisterFont(dFont);
设置组件并发布
基础包和组件面板的导入
//基础包和组件面板的导入
//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
//当前包和依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
foreach (var item in package.dependencies)
{
UIPackage.AddPackage("UI/" + item["name"]);
}
//创建组件对象 要设置为导出
GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson21_FGUI基础_控件_文本_字体的处理").asCom;
//添加到根对象
GRoot.inst.AddChild(view);
运行结果
字体其他相关问题解决
字体不带加粗 可以手动设置
FontManager.GetFont("字体名").customBold = true;
斜体和粗体不能同时使用 如果已经设置了customBold 不用设置customBoldAndItalic
FontManager.GetFont("字体名").customBoldAndItalic = true;
如果要使用TextMeshPro 需要在Unity编辑器的Scripting Define Symbols里增加 FAIRYGUI_TMPRO
21.2 知识点代码
using FairyGUI;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Lesson21_FGUI基础_控件_文本_字体的处理 : MonoBehaviour
{
void Start()
{
#region 知识点一 FairyGUI支持的字体
//1.系统字体(不建议使用)
//可能存在的问题
//如果使用系统字体,在别人的电脑或者设备上不见得存在同样的字体,可能效果和预期不一致
//编辑器和游戏引擎可能无法识别部分字体名字
//2.TTF字体(最常用)
//将后缀为ttf/ttc/otf的字体文件拖入到编辑器资源中,直接使用他们
//需要注意:
//发布后,字体文件不会被发布
//我们需要自己手动将字体文件放置到引擎中,然后建立字体映射
//Unity中将字体放置在Resources或者Resources/Fonts目录下,就不需要额外代码进行注册了
//如果不是这个路径需要用代码进行注册处理
//TTF字体设置相关参数
//3.位图字体(特殊需求时使用)
//位图字体就是使用图片来表示某个文字
#endregion
#region 知识点二 使用TTF字体的注意事项
//1.需要自己导入字体文件到工程中,建议直接放入Resources目录或其Fonts子目录下,放到这两个路径下,FGUI会自动帮助我们进行字体注册
//注意:默认字体不会正常显示 因为在FGUI设置的默认字体在发布Unity后不会生效 需要添加UIConfig组件 在UIConfig组件添加默认字体
//2.默认字体需要自己手动设置
//注意:设置默认字体 要在显示面板之前
//如果是放置在指定文件夹下 那么直接填写字体名即可
UIConfig.defaultFont = "STHUPO";
//如果没有放到指定路径Resources目录或其Fonts子目录下 设置默认字体要指定文件夹路径
UIConfig.defaultFont = "Other/STHUPO";
//3.如果字体文件放置在AB包中或者Resources下其他目录下,需要手动自己注册
//手动从对应位置加载字体文件 传入路径
Font font = Resources.Load<Font>("Other/STCAIYUN");
//然后申明一个 动态字体类型对象
DynamicFont dFont = new DynamicFont("STCAIYUN", font);
//注册它
FontManager.RegisterFont(dFont);
//基础包和组件面板的导入
//设置适配相关
GRoot.inst.SetContentScaleFactor(1365, 768, UIContentScaler.ScreenMatchMode.MatchHeight);
//当前包和依赖包的加载
UIPackage package = UIPackage.AddPackage("UI/FGUI教程");
foreach (var item in package.dependencies)
{
UIPackage.AddPackage("UI/" + item["name"]);
}
//创建组件对象 要设置为导出
GComponent view = UIPackage.CreateObject("FGUI教程", "Lesson21_FGUI基础_控件_文本_字体的处理").asCom;
//添加到根对象
GRoot.inst.AddChild(view);
#endregion
#region 知识点三 字体相关问题解决
//1.字体不带加粗 可以手动设置
//FontManager.GetFont("字体名").customBold = true;
//2.斜体和粗体不能同时使用 如果已经设置了customBold 不用设置customBoldAndItalic
//FontManager.GetFont("字体名").customBoldAndItalic = true;
//3.如果要使用TextMeshPro 需要在Unity编辑器的Scripting Define Symbols里增加 FAIRYGUI_TMPRO
#endregion
}
}
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com