最近公司项目要转成Webgl格式,打包测试后发现会把字体文件一同打包进去,导致打包文件很大
打包了一个空场景,使用的字体是Window自带的微软雅黑,字体占用空间很大
后来发现Unity有一个自带的TextMesh Pro,也可以进行文字输出,于是有了以下解决方法,TextMesh Pro的基本使用方法我就不说了,网上有很多
1.新建一个你想使用TextMesh字体
2.在场景中替换Unity的组件,使用
3.调节字体的属性,使用默认的格式,打包后会有问题,于是调节为跟TextMesh自带字体一样的配置
4.调节Atlas Population Mode 为静态
不过每次使用打包后都要调节回来也是很麻烦,题主这里自己编写了一个打包工具,在打包Build之前设置为Static静态格式,打包后变回动态格式
//TMP_FontAsset就是创建的TextMesh字体文件 private TMP_FontAsset _fontAsset;
if (_fontAsset != null)
{
//设置文本为静态
_fontAsset.atlasPopulationMode = AtlasPopulationMode.Static;
}
//打包
BuildReport buildReport = BuildPipeline.BuildPlayer(FindEnableEditorScenes(), ProjectPath(), BuildTarget, BuildOptions.None);
if (_fontAsset != null)
{
//设置文本为动态
_fontAsset.atlasPopulationMode = AtlasPopulationMode.Dynamic;
}
5.然后进行打包就可以了
运行效果