Phaser — это мощная HTML5-библиотека для создания 2D-игр, предоставляющая гибкие возможности работы с текстовыми объектами. Динамическое изменение текста используется для отображения информации в реальном времени: очков, жизней, сообщений, диалогов или подсказок.
Основной способ отображения текста — использование класса
Phaser.GameObjects.Text. Текст создаётся через сцену
методом this.add.text:
const scoreText = this.add.text(10, 10, 'Счёт: 0', {
font: '20px Arial',
fill: '#ffffff'
});
(x, y).Для обновления текста используется свойство text
объекта:
scoreText.text = 'Счёт: ' + playerScore;
Такой подход позволяет мгновенно изменять отображаемую информацию без пересоздания объекта.
Динамический текст часто обновляется в результате действий игрока:
playerScore = 0;
function collectCoin() {
playerScore += 10;
scoreText.text = 'Счёт: ' + playerScore;
}
Для сложных интерфейсов можно использовать события Phaser, такие как
pointerdown или пользовательские события через
this.events.emit.
Phaser поддерживает многострочные строки с использованием символа
\n:
const infoText = this.add.text(100, 50, 'Жизни: 3\nОчки: 0', {
font: '18px Verdana',
fill: '#ff0000'
});
Для динамического обновления отдельных строк текста можно разделять их на отдельные объекты:
livesText.text = 'Жизни: ' + playerLives;
pointsText.text = 'Очки: ' + playerPoints;
Это повышает гибкость и упрощает управление позиционированием.
Phaser позволяет изменять не только содержимое, но и стиль текста динамически:
scoreText.setStyle({ fill: '#ffff00', fontSize: '24px' });
scoreText.setShadow(2, 2, '#000000', 2, true, true);
Для анимации можно использовать встроенные твины:
this.tweens.add({
targets: scoreText,
scaleX: 1.5,
scaleY: 1.5,
yoyo: true,
duration: 300
});
Это позволяет создавать эффект “прыгающего” текста при наборе очков или получении бонусов.
Часто необходимо обновлять текст через определённые интервалы времени. Phaser предоставляет таймеры:
this.time.addEvent({
delay: 1000,
callback: () => {
timerText.text = 'Время: ' + --timeLeft;
},
loop: true
});
Использование таймеров упрощает создание обратного отсчёта или циклических сообщений.
Текст можно строить из массивов или объектов, что удобно для статистики, инвентаря или лога:
let inventory = ['Меч', 'Щит', 'Зелье'];
inventoryText.text = 'Инвентарь:\n' + inventory.join('\n');
При изменении массива достаточно повторно обновить text,
чтобы отобразить новые элементы.
Частое обновление текста может создавать нагрузку на рендеринг. Рекомендуется:
BitmapText, который работает быстрее за счёт
спрайтов шрифта.Динамическое изменение текста в Phaser обеспечивает гибкость интерфейса и интерактивности. Комбинация изменения содержимого, стиля и анимации позволяет создавать привлекательные визуальные элементы и адаптивные HUD, без необходимости пересоздавать объекты каждый кадр.
Поддержка событий, таймеров и структурированных данных делает систему текста мощным инструментом для игровых механик и визуального представления информации.