最近公司项目要转成Webgl格式,打包测试后发现会把字体文件一同打包进去,导致打包文件很大

WebGL解决中文字体过大的问题

打包了一个空场景,使用的字体是Window自带的微软雅黑,字体占用空间很大

后来发现Unity有一个自带的TextMesh Pro,也可以进行文字输出,于是有了以下解决方法,TextMesh Pro的基本使用方法我就不说了,网上有很多

1.新建一个你想使用TextMesh字体

WebGL解决中文字体过大的问题

2.在场景中替换Unity的组件,使用

WebGL解决中文字体过大的问题

3.调节字体的属性,使用默认的格式,打包后会有问题,于是调节为跟TextMesh自带字体一样的配置

WebGL解决中文字体过大的问题

4.调节Atlas Population Mode 为静态

WebGL解决中文字体过大的问题

不过每次使用打包后都要调节回来也是很麻烦,题主这里自己编写了一个打包工具,在打包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.然后进行打包就可以了

WebGL解决中文字体过大的问题

运行效果

WebGL解决中文字体过大的问题

 

相关文章: