Bitmap Text в Phaser представляет собой текстовый объект,
отображаемый с использованием заранее подготовленных шрифтов в формате
bitmap. В отличие от обычного текста (Text), Bitmap Text
обеспечивает высокую производительность и точное визуальное
воспроизведение символов, особенно полезное в играх с интенсивной
анимацией и большим количеством текстовых объектов.
Bitmap Text не рендерится динамически через Canvas или WebGL, а использует спрайт-лист, содержащий все символы шрифта. Такой подход позволяет значительно ускорить рендеринг, снизить нагрузку на графический процессор и получить эффект пиксельного или кастомного стиля текста.
Для использования Bitmap Text необходимо подготовить шрифт в формате
.fnt и соответствующее изображение .png,
содержащие все глифы. Шрифт можно создать с помощью инструментов:
.fnt и
.pngСтруктура файла .fnt описывает каждый символ: координаты
на спрайт-листе, ширину, высоту, смещение по оси X/Y, и кернинг. Phaser
загружает эти данные через загрузчик (Loader) и строит
текстовый объект на основе глифов.
this.load.bitmapFont('arcade', 'assets/fonts/arcade.png', 'assets/fonts/arcade.fnt');
Параметры функции:
'arcade' — уникальный ключ для шрифта'assets/fonts/arcade.png' — путь к изображению
глифов'assets/fonts/arcade.fnt' — путь к файлу описания
шрифтаПосле загрузки можно создавать объекты Bitmap Text в сцене.
let scoreText = this.add.bitmapText(50, 50, 'arcade', 'Score: 0', 32);
Параметры метода bitmapText:
x, y — координаты начала текстаfont — ключ загруженного шрифтаtext — строка для отображенияsize — размер текста в пикселях (опционально)Bitmap Text поддерживает изменение текста через свойство
.text:
scoreText.text = 'Score: 100';
Масштабирование и цвет
Bitmap Text позволяет изменять масштаб и цвет отдельных объектов:
scoreText.setScale(1.5); // Увеличение текста в 1.5 раза
scoreText.setTint(0xff0000); // Красный цвет текста
Выравнивание
Выравнивание текста внутри объекта управляется методом
setCenterAlign или setRightAlign:
scoreText.setCenterAlign(); // Центрирование текста по горизонтали
scoreText.setRightAlign(); // Выравнивание по правому краю
Bitmap Text можно интегрировать с анимацией Phaser:
this.tweens.add({
targets: scoreText,
y: 100,
duration: 500,
ease: 'Power2'
});
Также возможна интерактивность, если включить
setInteractive:
scoreText.setInteractive();
scoreText.on('pointerdown', () => {
console.log('Текст нажат!');
});
.text не влияют на производительность сильно, если
обновления происходят умеренно.Кернинг и пробелы
Bitmap Font поддерживает кернинг, что позволяет корректно отображать пары символов:
scoreText.setKerningsEnabled(true);
Множественные строки
Для отображения многострочного текста используется символ переноса
строки \n:
let multiLine = this.add.bitmapText(100, 100, 'arcade', 'Level 1\nScore: 200', 28);
Маски и эффекты
Bitmap Text можно маскировать или использовать с шейдерами:
let maskShape = this.make.graphics().fillCircle(150, 150, 50);
scoreText.setMask(new Phaser.Display.Masks.GeometryMask(this, maskShape));
Container, чтобы создавать
сложные HUD и интерфейсы.Bitmap Text является высокопроизводительным и гибким инструментом для игровых интерфейсов и визуальных эффектов в Phaser. Его возможности масштабирования, анимации, выравнивания и управления цветом позволяют создавать профессиональные и визуально точные текстовые элементы без потери производительности.