unity 字体_Unity的字体实现方式

1 我们用的TTF动态字体,Text每次赋值的时候Unity会生成贴图,以及保存UV信息,显示字体时根据UV信息去生成的贴图里取出渲染到屏幕上。出现花屏可能是贴图更新了,但UV信息没有更新,所以就取不到,这时需要重新用新的UV去取。

2 TTF字体的文件下,会生成一个texture文件及material文件。当需要显示文字的时候,会通过RequestCharactersInTexture函数向Font请求更新文字信息,然后使用GetCharacterInfo获取文字信息来渲染。在调用GetCharacterInfo的时候要保证文字都通过RequestCharactersInTexture请求过了。如果请求的时候,Font内部维护的texture不够用了,就会触发textureRebuildCallback的回调,通知外部Font的对象,其内部的texture被更新了,外部应该重新刷新

Unity的Font默认的texture大小是256X256,在纯英文的情况下,是完全够用的。但是汉字,日文等字体就完全不够了。如果unity的刷新回调触发,则要重新刷新所有的文本控件。这样就容易出现字体破碎的情况。因为一般情况下我们请求的文字不会很多,使用的texture不会超过256x256,unity不会自动扩展texture大小。但我们请求的文字过多时,texture如果不够了,这时就需要在回调函数中刷新字体,如果我们连续请求文字,每次texture都需要扩展(需要回调刷新),于是就会出现不停刷新,字体也可能会破碎。

解决办法:可以游戏刚开始时请求足够多的文字,那么unity就会内部自动扩展font的texture大小,于是就可以避免不停刷新的情况

参考:Unity中字体的一些知识 - 周小菲 - 博客园

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值