TextureManager в Phaser — это ключевой компонент системы
рендеринга, отвечающий за загрузку, хранение и управление графическими
ресурсами игры. Он обеспечивает централизованное управление текстурами,
включая изображения, спрайт-листы и атласы, что позволяет оптимизировать
использование памяти и упрощает доступ к ресурсам.
Загрузка текстур TextureManager
предоставляет методы для загрузки различных типов графических
ресурсов:
load.image(key, url) — загружает
одиночное изображение по URL и присваивает ему уникальный ключ
key.load.spritesheet(key, url, { frameWidth, frameHeight })
— загружает спрайт-лист с заданными размерами кадров.load.atlas(key, textureURL, atlasURL)
— загружает атлас текстур, где atlasURL содержит данные о
расположении кадров.Хранение и доступ Загруженные текстуры сохраняются в памяти и доступны по ключу. Основные методы для работы с ними:
get(key) — возвращает объект текстуры
по ключу.exists(key) — проверяет наличие
текстуры в менеджере.remove(key) — удаляет текстуру и
освобождает ресурсы.Управление кадрами спрайтов Для спрайт-листов и
атласов TextureManager предоставляет API для работы с
отдельными кадрами:
getFrame(key, frame) — возвращает
конкретный кадр по имени или индексу.add(key, source, width, height) —
добавляет новую текстуру или кадр из исходного изображения.removeFrame(key, frame) — удаляет кадр
из текстуры без удаления всей текстуры.Обновление и манипуляции с текстурами TextureManager позволяет изменять текстуры в реальном времени:
update(key, source) — заменяет
существующую текстуру новым изображением.refresh(key) — обновляет данные
текстуры в GPU, чтобы изменения отображались при рендеринге.Группировка и атласы Атласы текстур позволяют объединять множество изображений в один файл, что повышает производительность:
load.atlas или
addAtlas, а доступ к кадрам осуществляется через
getFrame.TextureManager генерирует события для отслеживания состояния текстур:
on('add', callback) — вызывается при
добавлении новой текстуры.on('remove', callback) — срабатывает
при удалении текстуры.on('update', callback) — вызывается
при обновлении текстуры.Эти события полезны для динамического управления ресурсами и синхронизации рендеринга с изменением графики.
Добавление изображения и проверка его наличия:
this.textures.addImage('player', 'assets/player.png');
if (this.textures.exists('player')) {
console.log('Текстура игрока загружена');
}
Работа с кадрами спрайт-листа:
this.textures.addSpriteSheet('explosion', 'assets/explosion.png', {
frameWidth: 64,
frameHeight: 64
});
let frame = this.textures.getFrame('explosion', 3);
console.log(frame.name, frame.width, frame.height);
Создание и использование атласа:
this.textures.addAtlas('gameAtlas', 'assets/atlas.png', 'assets/atlas.json');
let playerFrame = this.textures.getFrame('gameAtlas', 'player_idle');
TextureManager является ядром графического управления
Phaser, обеспечивая эффективное хранение, доступ и управление
текстурами, что позволяет создавать высокопроизводительные игры с
динамической графикой. Его API сочетает удобство использования с
глубокой гибкостью, позволяя работать как с простыми изображениями, так
и с комплексными атласами и анимациями.