7

FreeTypeFontGenerator と組み合わせてアセット マネージャを使用したいと考えています。

fnt ファイルをロードしたくないのは、画面解像度によって表示が異なるためです。そのため、私が現在行っていることは、すべての俳優またはスクリーンでオンザフライでフォントを生成することです。ゲームの開始時に一度フォントを生成し、アセットマネージャーにロードするのが最善だと思います。しかし、AssetManager には BitmapFont.class パラメータを含むファイル名が必要なようです。私がやりたいことは、5 つの異なるビットマップ フォントを生成し、それらのビットマップ フォントをアセット マネージャーにロードすることです。これにより、すべてのリソースを 1 か所にまとめて、それらを再利用できます。これらの BitmapFonts を作成してリストに保存し、テクスチャとオーディオを管理するアセットマネージャーの場合と同じように、すべてのアクターまたはスクリーンにリストを渡すことができます。しかし、アセット マネージャーという 1 つの場所にすべてをまとめた方がエレガントです。

では、FreeTypeFontGenerator で作成された BitmapFonts を assetmanager にロードする方法はありますか?

4

1 に答える 1

11

ここでは、独自の を提供する方法について読むことができますAssetLoader

SynchronousAssetLoaderまたはのいずれかを実装する必要がありAsynchronousAssetLoaderます。これらは、ファイルをフリータイプのフォントにします。これで、ジェネレーターを使用して目的のBitmapFont. アセット マネージャーを使用するため、ビットマップ フォントのデフォルト ローダーを次のように上書きする必要があります。

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 フォント自体のローダーが含まれるようになりました。

于 2014-06-13T08:08:46.230 に答える