LibGDX绘制非英文字体,智能自管理的LazyBitmapFont

阅读时注意

这篇文章实在太久远了,可能充斥以下内容:

  • 令人不适且非常奇怪的口语/萌二式文笔
  • 受年龄经验导致浅显且幼稚的“技术”类文章
  • 情绪宣泄、个人隐私、对生活的无端负能量抱怨
  • 中二病

阅读这些文章可能让你产生不适或嘲笑感,请谨慎甄别。

8WB~I9[FM`7BLT@D7PN3CR3

先少废话,直接上github,里面下载地址和demo都说的明明白白,看不懂只能说明残疾人不适合编程1

https://github.com/dingjibang/GDX-LAZY-FONT

LazyBitmapFont。这是一个libgdx引擎的文字懒加载模块,说白了就是不用generator一遍遍的生成字体玩了,他可以自己管理生成和纹理,你只要专心的绘制你要的文字就好了,而且他是完全继承且遵守BitmapFont接口的(虽然里面实现不一样,硬要说就类似java的各种list和map吧),你可以把这个组件代替任何原有的BitmapFont。

下面介绍和github上面的一样,随便放个示例图看一下吧:

QQ图片20151028091158

介绍

众所周知,LibGDX的文字模块对非英语地区支持的并不是很好(虽然现在已经好多了)。
这个LazyFont项目以前就有了,只不过以前是针对LibGDX 1.5版本以下的,因为我自己写的项目也只是用1.4.1版本的,所以这个git项目创建了之后就没太更新过。 前两天痛下狠心把1.4.1版本升级到了最新的1.7.0(当然来自未来的你那时候的GDX版本可能更高了),然后你懂的各种报错红叉叉让我痛不欲生(╯ ̄Д ̄)╯
其中最大的问题就是文字模块,1.4和1.7的GDX中,文字核心绘制方法已经变得很多了,我以前写的一些中文绘制辅助类也早就用不了了,于是打算重新研究下这个项目。

废话少说,本项目的作用& 好处有什么?

1.全自动的生成BitmapFont,无需手动generate,适合大量文字应用的场景(服务器公告、文字冒险游戏等),当然相对的,本组件的性能肯定没有静态生成贴图的原版BitmapFont高(也没少多少),要懒还是要性能全靠你选择。
2.支持BitmapFont.draw(),也支持所有需要调用font的地方(如Scene2d.ui.Label这个类)。
3.不污染代码,即插即用,理论来说以后的GDX只要更新不是太猛,基本都能兼容(不兼容1.4以下版本,如果你想要1.4以下的,看一下本项目的历史记录自己找吧)。

使用方法

你可以直接下载jar包,然后导入到你的项目里,或者拷贝源代码。

要创建一个LazyBitmapFont,你需要一个FreeTypeFontGenerator,且只需要一个,你可以创建一个FreeTypeFontGenerator变量用到游戏结束。

lazyBitmapFont = new LazyBitmapFont(FreeTypeFontGenerator generator, int fontSize);

其中,generator就是上面说的变量,你只需要全局new一个这个变量,就可以给所有的LazyBitmapFont或者你自己的需求使用了。 然后,fontSize顾名思义,就是文字的大小了。遗憾的是,本组件不能动态的更改文字大小,也就是说一旦new了一个本组件,就只能使用一种文字大小了,如果你需要好几种字号,那么就分别多new几个不同字号的本组件吧(每个组件都很轻量,不会占资源的~

接着,没了,是的,没了( •́ .̫ •̀ )

你可以直接调用下面代码试一下:

lazyBitmapFont.draw(batch, "我随便说一句话就能够组成十五字", 100, 200);

看看,屏幕上有没有字出来呢?

同理,你也可以弄一个label试试:

//create...
LabelStyle style = new LabelStyle();
style.font = lazyBitmapFont;

Label label = new Label("我就随便打句话",style);

Stage stage = new Stage();
stage.addActor(label);

// render...
stage.act();
stage.draw();

//or change text at runtime...
label.setText("在运行时候随便的更改下文字!");

好了,就是这么简单,除了new的时候和原版不同以外,其他都是一模一样的,而且再也不用换一句文本就重新new一个了,就是这么酸爽!

当然,最后用完了也别忘了dispose()掉哦。

lazyBitmapFont.dispose();

5 Responses to “ LibGDX绘制非英文字体,智能自管理的LazyBitmapFont ”

  1. 居然更新了! _(:3J∠)_

  2. 从B站过来的辣!up果然是切开黑色的那种萌!

发表评论