Libgdx - 加载字体会减慢游戏速度



我正在使用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操作,它非常昂贵,所以在使用之前加载所有资源(字体精灵等)然后使用他们的参考是处理这个问题的更聪明的方法。

还应该注意的是,在构造函数中执行任何类型的逻辑都是不好的做法,应该不惜一切代价避免,类的初始化阶段应该很快。

最新更新