Libgdx FreeTypeFontGenerator с AssetManager
Я хотел бы использовать asset manager в сочетании с FreeTypeFontGenerator.
Я не хочу, чтобы загрузить фнт файлы, потому что они отображают по-разному на разных screenresolutions. Так что в настоящее время я создаю свои шрифты на лету в каждом актере или экране. Теперь я думаю, что лучше всего сгенерировать шрифты один раз при запуске игры и загрузить их в asset manager. Но AssetManager, похоже, нуждается в имени файла с BitmapFont.параметр класса. Что я хочу сделать генерирует 5 различных bitmapfonts и загружает эти BitmapFonts в assetmanager, поэтому у меня есть все мои ресурсы в одном месте и может их повторно использовать. Я мог бы просто создать эти BitmapFonts, сохранить их в списке и дать список каждому актеру или экрану, так же, как я делаю с assetmanager, с которым я управляю текстурами и аудио. Но было бы более элегантно иметь все в одном месте, управляющего активами.
Итак, есть ли способ загрузить BitmapFonts, созданные с помощью FreeTypeFontGenerator в assetmanager?
1 ответов
здесь вы можете прочитать о том, как поставить свой собственный AssetLoader
.
вам придется реализовать либо SynchronousAssetLoader
или AsynchronousAssetLoader
. Это приведет файл к свободному шрифту. С помощью этого вы можете использовать генератор для генерации желаемого BitmapFont
. Поскольку вы хотите использовать asset manager, вы должны перезаписать загрузчик по умолчанию для растровых шрифтов, таких как:
manager.setLoader(BitmapFont.class, new MyFreeTypeFontLoader(new InternalFileHandleResolver()));
Via 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