1.首先我们需要把位图字体导入到unity中,然后利用插件转化一下 我使用的是BMFont
2.然后我们就可以看到生成了四个文件,其中我们主要注意的是.fontsettings文件,
我们主要修改的就是 Character Rect里面的各个参数,至于具体是什么 ,大家有兴趣的可以去搜索,
好了 我们直接上代码
把脚本挂载到text组件上面
其中singleFontWidth和singleFontHeight是你当前位图字体的参数
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;public class BitmapFontResizer : MonoBehaviour
{public float singleFontWidth = 65;//单个位图字体的宽度
public float singleFontHeight = 90;//单个位图字体的高度
private Text textComponent;//text组件
private float maxLenth = 580;//text框的长度
public Font myFont;
void Start()
{
myFont = Instantiate(myFont);//实例化一个字体,不然会修改源文件参数
textComponent = GetComponent<Text>();
textComponent.font = myFont;
CharacterInfo[] _characterInfo = textComponent.font.characterInfo;
if (textComponent.text.Length * singleFontWidth >= maxLenth)
{
float coefficient = maxLenth / (textComponent.text.Length * singleFontWidth);//计算比例系数
for (int i = 0; i < _characterInfo.Length; i++)
{
_characterInfo[i].glyphWidth = (int)(_characterInfo[i].glyphWidth * coefficient);//修改宽度
//_characterInfo[i].glyphHeight = (int)(_characterInfo[i].glyphHeight * coefficient);//修改高度,(这个会同时修改Vert里面的Y,与预先的不适合,谨慎使用)
_characterInfo[i].advance = (int)(_characterInfo[i].advance * coefficient);//宽度发生变化后需要修改字体之间的间隔
_characterInfo[i].vert.height = (int)(_characterInfo[i].vert.height * coefficient);//弃用的,但是还可以使用我用的是unity2021,单纯修改高度
_characterInfo[i].vert.y = (int)(_characterInfo[i].vert.y * coefficient);//弃用的,但是还可以使用我用的是unity2021,修改Y值
}文章来源:https://www.toymoban.com/news/detail-751767.html}
textComponent.font.characterInfo = _characterInfo;//对characterInfo进行赋值
}
}文章来源地址https://www.toymoban.com/news/detail-751767.html
到了这里,关于Unity UGUI使用Text组件位图字体进行自适应大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!