我正在使用FreeTypeFontGenerator来加载我的字体。目前我有 6 种不同的位图字体,我将它们加载到我的 Screen 类的构造函数中并在渲染函数中绘制它们。这是一个代码片段,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 秒,因为它必须从文件中加载字体。有没有更好的方法可以做到这一点?
谢谢。
也许你想看看这个:
Libgdx FreeTypeFontGenerator with AssetManager
不仅适用于字体,您还可以将其用于其所有资产,无论是位图字体、音乐、图片还是支持资源管理器的任何其他资产。
资产管理维基 ->https://github.com/libgdx/libgdx/wiki/Managing-your-assets
我希望你有帮助。
我不是特别熟悉这个库,但几年前我遇到了一个更棘手的问题。
由于字体是资源,因此应在游戏/关卡启动时加载。
而不是在游戏已经运行时。
从光盘读取是一个IO操作,它非常昂贵,所以在使用之前加载所有资源(字体精灵等)然后使用他们的参考是处理这个问题的更聪明的方法。
还应该注意的是,在构造函数中执行任何类型的逻辑都是不好的做法,应该不惜一切代价避免,类的初始化阶段应该很快。