带有AssetManager加载/卸载的LibGDX TTF

时间:2016-03-14 20:53:20

标签: java libgdx object-pooling asset-management

您好我正在编辑。目前我想要包含一个Font类,它可以加载ttf并生成3种尺寸的bitmapFonts(Small,Normal,Large)。它们也将通过缩放(用户设置字体比例的选项)。 可以在字体目录中添加字体以向编辑器添加新内容。

FTFLoader示例:

        FreeTypeFontLoaderParameter size16 = new FreeTypeFontLoaderParameter;
        size16.fontFileName = filePath;
        size16.fontParameters.size = 16 * scale;
        manager.load(name16, BitmapFont.class, size16);

        FreeTypeFontLoaderParameter size32 = new FreeTypeFontLoaderParameter;
        size32.fontFileName = filePath;
        size32.fontParameters.size = 32 * scale;
        manager.load(name32, BitmapFont.class, size32);
        FreeTypeFontLoaderParameter size48 = new FreeTypeFontLoaderParameter;
        size48.fontFileName = filePath;
        size48.fontParameters.size = 48 * scale;
        manager.load(name48, BitmapFont.class, size48);

现在如果我要使用它,如果用户更改了字体大小,我必须卸载旧的ttf / bitmapFonts并再次加载它们,原因是为每种字体创建一个新的FTFLoaderParameter。

我的想法是使用游泳池:

private void reloadALL(int scale) {
        for (int i = 0; i < names.size; i++) {
            unload(names.get(i));
        }

        for (int i = 0, j = 0; i < filePaths.size; i++, j+=3) {
            FreeTypeFontLoaderParameter size16 = parameterPool.obtain();
            size16.fontFileName = filePaths.get(i);
            size16.fontParameters.size = 16 * scale;
            manager.load(names.get(j), BitmapFont.class, size16);

            FreeTypeFontLoaderParameter size32 = parameterPool.obtain();
            size32.fontFileName = filePaths.get(i);
            size32.fontParameters.size = 32 * scale;
            manager.load(names.get(j+1), BitmapFont.class, size32);

            FreeTypeFontLoaderParameter size48 = parameterPool.obtain();
            size48.fontFileName = filePaths.get(i);
            size48.fontParameters.size = 48 * scale;
            manager.load(names.get(j+2), BitmapFont.class, size48);
        }
    }

但我不确定这是好处还是会引起问题。我从来没有使用过Pool类,如果这是一个有问题的资产管理器,那么请阅读Pool Caveats吗?

0 个答案:

没有答案