Как установить размер растрового шрифта Libgdx?

Я отображаю на экране игру fps, используя растровый шрифт, но нет методов для размера. Это проблема для меня, потому что размер области просмотра моей камеры очень мал, поэтому текст при рендеринге огромный и пиксельный.

font.draw(batch, Float.toString(Gdx.graphics.getFramesPerSecond), x, y);

person Kevin Bryan    schedule 10.11.2015    source источник


Ответы (5)


Вы пробовали метод setScale(), который я использую для изменения размера моего шрифта?

myFont.getRegion().getTexture().setFilter(TextureFilter.Linear, TextureFilter.Linear);
myFont.setScale(scale);

если у вас возникли проблемы, оставьте комментарий

Удачи !!

Изменить:

В последней версии libgdx попробуйте масштабировать шрифт следующим образом:

myFont.getData().setScale();
person Netero    schedule 10.11.2015
comment
примечание: если вы хотите, например, уменьшить размер текста до половины, введите: myFont.setScale(0.5f); - person Netero; 10.11.2015
comment
больше нет метода setScale(), они его удалили. - person Kevin Bryan; 10.11.2015
comment
Как насчет font.getData().setScale()? - person Netero; 10.11.2015
comment
спасибо, он по-прежнему огромен, хотя даже в масштабе 0,5f, моя область просмотра слишком мала, так как я использую box2d, поэтому все в метрах, а не в пикселях. - person Kevin Bryan; 11.11.2015
comment
Реализация приведенного выше ответа не показывает чистый текст... способ сделать его чистым. - person Ashwani; 20.04.2016
comment
Хорошо, я понял, я увеличил размер шрифта при его создании ... но все же, если есть способ сделать это во время выполнения, это было бы полезно. - person Ashwani; 20.04.2016
comment
Чем меньше я устанавливаю масштаб, тем больше букв (!?) случайно удаляется, черт возьми - person xjcl; 23.08.2020

Я часто использую то, что предложил minos23. Но недостатком является то, что он может выглядеть пиксельным, особенно при масштабировании вверх. Причудливый большой растровый шрифт может занимать много места, и если вам нужно много разных шрифтов, вы можете выйти за рамки своего бюджета.

Используя Gdx.Freetype, вы можете создавать растровые шрифты во время выполнения из небольших .ttf файлы. Это означает, что вам нужно отправить только файлы .ttf вместе с вашим приложением, и вы можете создать шрифт на основе пользовательских настроек, таких как разрешение.

Помимо масштабирования и решения FreeType, у вас есть несколько растровых изображений с разными размерами шрифта. Таким образом, ваши шрифты всегда остаются четкими, но за счет производительности во время выполнения для создания правильных шрифтов.

person Madmenyo    schedule 11.11.2015

setScale — это функция, которую нужно использовать. Обратите внимание, что с новейшей версией LibGDX (хотя это изменилось ранее) вам нужно сделать это вместо:

font.getData().setScale(2, 2);

прежде чем было достаточно сделать:

font.setScale(2, 2);

Первое число в setScale — это масштаб X, а второе — масштаб Y.

person Zoe    schedule 20.07.2017

Я также использую функцию setScale(), как и другие, для уменьшения размера шрифта, но здесь я хочу предложить другое решение, и у меня есть вопрос. Почему вы не используете экземпляр FPSRenderer или почему вы не рисуете свою метку fps на другом пакете, матрица проекции которого имеет размер экрана?

person Khachatur Badalyan    schedule 18.11.2015

Ответ Нетеро работает. Если вы хотите сделать код чище, вы можете написать вспомогательную функцию:

public static void setLineHeight(BitmapFont font, float height) {
    font.getData().setScale(height * font.getScaleY() / font.getLineHeight());
}
person Deepscorn    schedule 12.12.2018