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