gpt4 book ai didi

fonts - 带有 AssetManager 的 Libgdx FreeTypeFontGenerator

转载 作者:行者123 更新时间:2023-12-04 10:50:59 25 4
gpt4 key购买 nike

我想将 Assets 管理器与 FreeTypeFontGenerator 结合使用。

我不想加载 fnt 文件,因为它们在不同的屏幕分辨率上显示不同。所以我目前所做的是在每个 Actor 或屏幕上即时生成我的字体。
现在我认为最好在游戏启动时生成一次字体并将它们加载到 Assets 管理器中。但是 AssetManager 似乎需要一个带有 BitmapFont.class 参数的文件名。我想要做的是生成 5 种不同的位图字体并将这些位图字体加载到 Assets 管理器中,因此我将所有资源集中在一个地方,并且可以重用它们。我可以创建这些 BitmapFonts,将它们保存在一个列表中,然后将列表提供给每个 Actor 或屏幕,就像我使用 Assets 管理器管理我的纹理和音频一样。但是将所有内容都放在一个地方,即 Assets 管理器,会更优雅。

那么,有没有办法将使用 FreeTypeFontGenerator 创建的 BitmapFonts 加载到 Assets 管理器中?

最佳答案

Here您可以阅读有关如何供应自己的信息 AssetLoader .

您必须实现 SynchronousAssetLoader AsynchronousAssetLoader .那些将使文件成为免费字体。有了它,您可以使用生成器生成您想要的 BitmapFont .由于您想使用 Assets 管理器,您必须像这样覆盖位图字体的默认加载器:

manager.setLoader(BitmapFont.class, new MyFreeTypeFontLoader(new InternalFileHandleResolver()));

通过 AssetLoaderParameters 您可以向加载程序提供更多信息,例如字体大小。

以下代码未经测试,但可能有效:
public class FreeTypeFontLoader extends SynchronousAssetLoader<BitmapFont, FreeTypeFontLoader.FreeTypeFontParameters> {

public FreeTypeFontLoader(FileHandleResolver resolver) {
super(resolver);
}

@Override
public BitmapFont load(AssetManager assetManager, String fileName, FileHandle file, FreeTypeFontParameters parameter) {
FreeTypeFontGenerator generator = new FreeTypeFontGenerator(file);

return generator.generateFont(parameter.fontParameters);
}

static public class FreeTypeFontParameters extends AssetLoaderParameters<BitmapFont> {

public FreeTypeFontParameter fontParameters;
}

@Override
public Array<AssetDescriptor> getDependencies(String fileName, FileHandle file, FreeTypeFontParameters parameter) {
return null;
}

}

更新:

这不再是必要的,gdx-freetype 扩展现在有用于 freetype 字体的加载器!
  • FreeTypeFontGeneratorLoader (和上面的代码一样)
  • FreeTypeFontLoader
  • FreeTypeFontLoaderTest
  • 关于fonts - 带有 AssetManager 的 Libgdx FreeTypeFontGenerator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24195566/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com