В Phaser 3 текстовые элементы создаются с помощью
класса Phaser.GameObjects.Text. Основная функция для
создания текстового объекта —
this.add.text(x, y, text, style), где:
Пример создания базового текста:
this.add.text(100, 50, 'Привет, Phaser!', {
fontFamily: 'Arial',
fontSize: '32px',
color: '#ffffff'
});
Text-объект поддерживает гибкую настройку шрифта через
свойства:
'Arial', 'Courier New');'24px', '48px');'#ff0000') или CSS-значение ('red');'normal',
'italic', 'bold');this.add.text(100, 100, 'Контурный текст', {
fontFamily: 'Verdana',
fontSize: '40px',
color: '#00ff00',
stroke: '#000000',
strokeThickness: 4
});
Текст можно выравнивать как по горизонтали, так и по вертикали. Основные свойства:
'left', 'center', 'right');this.add.text(50, 150, 'Длинный текст, который может не помещаться', {
fontSize: '24px',
color: '#ffffff',
align: 'center',
wordWrap: { width: 200, useAdvancedWrap: true }
});
wordWrap позволяет переносить текст на новую строку при
достижении ширины блока.
Для упрощения работы со сложными текстовыми стилями можно создавать объекты стилей отдельно:
const style = {
fontFamily: 'Georgia',
fontSize: '36px',
color: '#ffcc00',
fontStyle: 'bold',
stroke: '#333333',
strokeThickness: 2,
shadow: {
offsetX: 2,
offsetY: 2,
color: '#000000',
blur: 4,
stroke: true,
fill: true
}
};
this.add.text(200, 200, 'Стильный текст', style);
Тень (shadow) добавляет глубину тексту, делая его более заметным на фоне.
Text-объект поддерживает изменение текста после создания через свойство text:
let scoreText = this.add.text(50, 50, 'Очки: 0', { fontSize: '28px', color: '#ffffff' });
scoreText.text = 'Очки: 10';
Также можно менять стиль динамически:
scoreText.setStyle({ color: '#ff0000', fontSize: '32px' });
Text-объекты могут быть интерактивными, реагируя на события мыши:
let startText = this.add.text(400, 300, 'Начать игру', {
fontSize: '48px',
color: '#00ff00'
}).setInteractive();
startText.on('pointerover', () => startText.setStyle({ color: '#ffff00' }));
startText.on('pointerout', () => startText.setStyle({ color: '#00ff00' }));
startText.on('pointerdown', () => console.log('Игра началась!'));
С помощью .setInteractive() текст становится элементом
интерфейса, который можно использовать как кнопку или ссылку.
Phaser не поддерживает полноценный HTML в Text-объектах, но можно комбинировать несколько текстов или использовать BitmapText для сложных эффектов. Основные возможности включают:
tween на
Text-объект.Text-объекты легко анимировать с помощью встроенной системы tweens:
this.tweens.add({
targets: scoreText,
y: 100,
alpha: 0,
duration: 1000,
ease: 'Power2',
yoyo: true,
repeat: -1
});
Возможные свойства для анимации:
Для игр с большим количеством текста рекомендуется использовать
BitmapText (this.add.bitmapText), который
рендерится как спрайты и значительно быстрее обычного Text-объекта.
Основные отличия:
this.add.bitmapText(100, 100, 'desyrel', 'Привет, мир!', 32);
Text-объект можно добавлять в контейнеры (Container),
группировать с изображениями или спрайтами для комплексного интерфейса.
Это позволяет создавать HUD, кнопки и надписи с динамическим
содержанием, управляемые как единый объект.
Такой подход обеспечивает гибкость и высокую производительность при работе с текстом в Phaser, позволяет создавать стилизованные интерфейсы, анимации и интерактивные элементы без потери контроля над визуальным оформлением.