一、准备工具
1、下载相应版本的unity引擎;
首先需要检查游戏所使用的的unity引擎版本,一般直接右键游戏exe属性-详细信息即可看到版本
也可以使用十六进制编辑器打开游戏Data目录下的任意level或者assets文件,开头就可以看到表述版本的字符
找到版本后前往Unity所有版本下载 | Unity中国官网,下载对应版本的Unity引擎即可
2、安装TMP插件
打开Unity引擎并创建一个项目,进入项目后打开Unity的Window菜单栏选择Package Manager包管理器,找到TextMeshPro并安装最新版本
安装完成后,打开Unity的Window菜单栏的TextMeshPro选项导入TMP资源
二、生成SDF字体
1、导入ttf字体和字符集文件
将你准备好的ttf字体文件拖到unity编辑器中,并下载链接:https://pan.baidu.com/s/1VU7rTl0jGCTPOQ12lQ-uoQ 提取码:x95w
中提供的txt字符集文件,将txt字符集文件也拖到unity编辑器中
2、创建SDF字体
开Unity的Window菜单栏的TextMeshPro选项中的Font Asset Creator,依次选择ttf字体、字符集文件,以及贴图大小,贴图大小一般选择4096*4096这样一张贴图即可放下所有字符,然后再点击Generate Font Atlas开始生成,生成完成后点击Save保存到项目文件夹中
3、修改SDF默认材质
在Unity编辑器中点击你生成的SDF资源,找到SDF资源中的Material材质这一项,并将其Shader这一选项改为TextMeshPro/Mobile/Distance Field(注意路径TextMeshPro->Mobile->Distance Field)
4、导出bundle包
将下载的CreateAssetBundle.cs文件拖到Unity编辑器的项目资源中,托入后unity编辑器的Assets菜单下将多出一项Build AssetBundles,此时在点击SDF资源,在Inspector窗口下方也会出现Asset Labels
选中SDF资源,在此Asset Labels中的AssBundle选项中选择New,并输入一个包名然后敲回车,即表示将此sdf资源打入到此Bundle包中,然后点击Assets菜单的Build AssetBundles,将会在你项目文件夹的AssetBundle目录下生成一个以此包名命名的文件
5、导入游戏所使用的Shader
打开下载的uabea_rel3_win_x64文件并解压后,打开UABEAvalonia.exe(以下简称uabe),点击菜单栏的File->Open,选择你刚刚生成的Bundle包文件,然后点击Info按钮
找到并选中类型为Shader的资源,并点击右下方的Import Dump
然后选择下载的SDF_Shader.txt,导入后再点击当前窗口的File->Save然后关闭窗口,再点击uabe主窗口的File->Save,将导入了Shader的Bundle保存到文件中
自此完成SDF文件的生成
三、使用此SDF字体
将保存好的Bundle文件拷贝到游戏vrzwk/bundle文件夹下,使用记事本打开vrzwk/bundle文件夹下的FontAsset.config配置文件,依次修改其中的BundlePath(Bundle文件)、FontAssetName(SDF资源名称配置项)
修改完成后,打开游戏,观察字体是否发生变化