О чем этот пример

Заголовок игры — это не просто строка в конфигурации. В Phaser он становится частью глобального контекста и может быть использован для динамического отображения названия прямо на игровом поле, в интерфейсе или для логики. Эта статья покажет, как правильно установить заголовок в конфигурации и получить к нему доступ из любого места вашего кода, что особенно полезно для создания заголовочных экранов, меню или отладки.

Версия Phaser: код и демо в этой статье рассчитаны на Phaser 3.90.0.

Живой запуск

Ниже встроен рабочий билд примера. Оригинальный источник: GitHub.

Исходный код


class Example extends Phaser.Scene
{
    preload ()
    {
        this.load.setBaseURL('https://raw.githubusercontent.com/phaserjs/examples/master/public/');
        this.load.image('pic', 'assets/pics/baal-loader.png');
    }

    create ()
    {
        this.add.image(400, 300, 'pic');

        this.add.text(80, 560, `Game Title: ${game.config.gameTitle}`, { font: '16px Courier', fill: '#ffffff' });
    }
}

const config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    width: 800,
    height: 600,
    scene: Example,

    //  Open the Dev Tools
    //  The title of your game will appear in the banner text
    title: 'Shock and Awesome'
};

const game = new Phaser.Game(config);

Установка заголовка в конфигурации игры

Заголовок игры задаётся в основном конфигурационном объекте при создании экземпляра Phaser.Game. Это свойство не влияет на внутреннюю работу движка, но сохраняется в глобальном объекте конфигурации для вашего удобства.

const config = {
    type: Phaser.AUTO,
    parent: 'phaser-example',
    width: 800,
    height: 600,
    scene: Example,
    title: 'Shock and Awesome'
};

const game = new Phaser.Game(config);

В этом примере мы создаём конфиг с базовыми настройками: тип рендера, родительский контейнер, размеры холста и ссылку на главную сцену. Ключевое свойство title получает строковое значение 'Shock and Awesome'. После инициализации игры это значение будет доступно через game.config.gameTitle.

Доступ к заголовку из объекта сцены

Чтобы использовать заголовок внутри сцены, обратитесь к глобальному объекту game, который является экземпляром Phaser.Game. Свойство config этого объекта содержит всю переданную при создании конфигурацию, а gameTitle — наш установленный заголовок.

create ()
{
    this.add.image(400, 300, 'pic');
    this.add.text(80, 560, `Game Title: ${game.config.gameTitle}`, { font: '16px Courier', fill: '#ffffff' });
}

В методе create мы сначала добавляем фоновое изображение, а затем создаём текстовый объект. Для формирования строки используется шаблонный литерал, который подставляет значение game.config.gameTitle. Обратите внимание: обращение идёт именно к глобальной переменной game, а не к локальному контексту сцены (this).

Практическое применение и нюансы

Хотя в примере заголовок просто выводится на экран, его основная польза — централизованное хранение мета-информации об игре. Вы можете использовать его для: * Динамического обновления текста в меню или титрах. * Логирования или отладки, чтобы в консоли всегда было видно, какая версия игры запущена. * Использования в условиях или ветвлении кода.

Важно помнить, что game.config — это замороженный (read-only) объект. Вы не можете изменить gameTitle после инициализации игры через прямое присваивание. Если нужна динамически изменяемая переменная, её следует хранить в отдельном свойстве сцены или в менеджере данных.

// Не сработает после создания игры
game.config.gameTitle = 'New Title';

Что попробовать дальше

Использование свойства title в конфигурации Phaser — это простой и элегантный способ задать имя вашего проекта один раз и иметь к нему доступ отовсюду. Для экспериментов попробуйте создать сцену-заставку, которая анимированно выводит этот заголовок, или используйте его как ключ для загрузки специфичных ресурсов (например, фоновой музыки для конкретной игры).