Libgdx 使用一个ttf文件的多个位图字体

Libgdx 使用一个ttf文件的多个位图字体,libgdx,Libgdx,我尝试使用AssetManager加载两个位图字体 专用无效加载(AssetManager AssetManager){ FileHandlerResolver解析器=新的InternalFileHandlerResolver(); assetManager.setLoader(FreeTypeFontGenerator.class,新的FreeTypeFontGeneratorLoader(解析器)); assetManager.setLoader(BitmapFont.class,“.ttf

我尝试使用AssetManager加载两个位图字体

专用无效加载(AssetManager AssetManager){
FileHandlerResolver解析器=新的InternalFileHandlerResolver();
assetManager.setLoader(FreeTypeFontGenerator.class,新的FreeTypeFontGeneratorLoader(解析器));
assetManager.setLoader(BitmapFont.class,“.ttf”,新的FreetypeFontLoader(解析器));
load(createDescriptor(“myFont.ttf”,70,Color.WHITE,Color.BLACK,1););
load(createDescriptor(“myFont.ttf”,50,Color.BLACK,Color.WHITE,10););
}
公共静态AssetDescriptor createDescriptor(字符串fontPath、int fontSize、Color fontColor、Color borderColor、int borderSize){
FreetypeFontLoader.FreeTypeFontLoaderParameter参数=新的FreetypeFontLoader.FreeTypeFontLoaderParameter();
parameter.fontFileName=fontPath;
parameter.fontParameters.size=fontSize;
parameter.fontParameters.color=fontColor;
parameter.fontParameters.borderColor=边框颜色;
parameter.fontParameters.borderWidth=边框大小;
返回新的AssetDescriptor(parameter.fontFileName、BitmapFont.class、parameter);
}
不幸的是,由于文件名相同,AssetManager使用名为isLoaded to ignore的方法加载第二个BitmapFont

我想扩展AssetManager,不仅检查文件名,还检查AssetLoaderParameters是否相等。但是AssetManager不希望被扩展


是否有其他方法可以使用一个AssetManager和一个.ttf源文件加载多个位图字体?

AssetDescriptor名称和fontFileName之间存在差异:fontFileName是*.ttf文件的路径。资产的名称是唯一的。您可以使用myfont32作为字号为32的字体名称,另一个作为其他大小的字体名称。

谢谢!在我的例子中,我还必须在AssetDescriptor名称中添加一个.ttf以避免强制转换错误,但现在它可以工作了:)我很高兴能帮助您。我自己在使用AssetManager;)时遇到了这个问题。
private void load(AssetManager assetManager) {
    FileHandleResolver resolver = new InternalFileHandleResolver();
    assetManager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
    assetManager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));

    assetManager.load(createDescriptor("myFont.ttf", 70, Color.WHITE, Color.BLACK, 1););
    assetManager.load(createDescriptor("myFont.ttf", 50, Color.BLACK, Color.WHITE, 10););
}


public static AssetDescriptor createDescriptor(String fontPath, int fontSize, Color fontColor, Color borderColor, int borderSize) {
    FreetypeFontLoader.FreeTypeFontLoaderParameter parameter = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
    parameter.fontFileName = fontPath;
    parameter.fontParameters.size = fontSize;
    parameter.fontParameters.color = fontColor;
    parameter.fontParameters.borderColor = borderColor;
    parameter.fontParameters.borderWidth = borderSize;
    return new AssetDescriptor<BitmapFont>(parameter.fontFileName, BitmapFont.class, parameter);
}