我正在使用FreeTypeFontGenerator来加载我的字体。目前我有6个不同的BitmapFonts,我将它们加载到我的Screen类的构造函数中,并在render函数中绘制它们。 这是一个代码片段,myFont是我编写的一个类,它在内部使用FreeTypeFontGenerator,而loadFont函数返回一个BitmapFont对象。
public Screen1 () {
.....
.....
myFont = new MyFont();
circleFonts = new BitmapFont[4];
for (int i=0; i<4; i++) {
circleFonts[i] = myFont.loadFont("fonts/roboto/Roboto-Light.ttf", 20);
}
textOrColorFont = myFont.loadFont("fonts/roboto/Roboto-Light.ttf",15);
currentColorFont = myFont.loadFont("fonts/roboto/Roboto-Light.ttf", 15);
}
问题是因为每次移动到Screen1时我都要加载这些字体,游戏会因为必须从文件中加载字体而停留2-3秒。有更好的方法吗?
感谢。
答案 0 :(得分:1)
也许你想看看这个:
Libgdx FreeTypeFontGenerator with AssetManager
不仅对于字体,您还可以将它用于所有资产,无论是位图字体,音乐,图片还是支持AssetManager的任何其他资源。
AssetManager wiki - &gt; https://github.com/libgdx/libgdx/wiki/Managing-your-assets
我希望你能提供帮助。
答案 1 :(得分:0)
嗯,我对这个图书馆并不熟悉,但几年前我的问题比较渺茫。
由于字体是资源,因此应在游戏/级别启动时加载。
而不是游戏已经在运行。
从光盘读取是一个IO操作并且它非常昂贵,因此在使用之前加载所有资源(字体sprite等) 然后使用他们的参考是一种更聪明的方法来处理它。
还应该注意的是,在构造函数中执行任何类型的逻辑都是不好的做法,应该不惜一切代价避免,类的初始化阶段应该很快。