Я создаю игру с Phaser 3, которая будет развернута и запущена в основной оболочке Chromium. У меня нет возможности добавить сервер за кулисами для обработки доставки изображений (и предотвращения проблем с CORS), поэтому я загружаю свои ресурсы в свою игру, используя метод, описанный здесь .
Я использую Webpack и url-loader
для извлечения кодировки base64 для своих активов и загружаю их следующим образом:
import platformSrc from './images/platform.png';
import triggerSrc from './images/trigger.png';
Затем я использую функцию preload()
, чтобы добавить их в свой менеджер текстур.
preload() {
const assetList = ['platform', 'trigger', 'audio', 'audioJson'];
let nLoaded = 0;
this.cache.json.add('audioJson', audioJson);
nLoaded++;
this.textures.addBase64('platform', platformSrc);
nLoaded++;
this.textures.addBase64('trigger', triggerSrc);
nLoaded++;
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioCtx.decodeAudioData(toArrayBuffer(audioSrc), (buffer) => {
this.cache.audio.add('sfx', buffer);
nLoaded++;
if (nLoaded >= assetList.length) {
var actualCreate = this.createGameObjects.bind(this);
actualCreate();
}
}, (e) => {
console.log("Error with decoding audio data");
nLoaded++;
if (nLoaded >= assetList.length) {
var actualCreate = this.createGameObjects.bind(this);
actualCreate();
}
});
}
Все это работает. Моя проблема пытается загрузить атлас, используя этот метод. У меня есть atlas.png
и atlas.json
файл, содержащий несколько упакованных изображений. Я создал этот атлас с помощью Leshy SpriteSheet Tool и экспортировал в формате JSON-TP-Array
.
Я попытался загрузить свой атлас так:
this.load.atlas('atlas', atlasImg, atlasJson);
и это:
this.textures.addAtlas('atlas', atlasImg, atlasJson);
и это:
this.textures.addBase64('atlasImg', atlasImg);
this.json.cache.add('atlasJson', atlasJson);
this.load.atlas('atlas', 'atlasImg', 'atlasJson');
Все безрезультатно. Я получаю эту ошибку:
Uncaught TypeError: не удалось выполнить texImage2D
'WebGLRenderingContext': не найдено ни одной функции, которая соответствовала бы
подпись предоставлена.
Я пролил документацию TextureManager , пытаясь выяснить, чего мне не хватает, но, похоже, не могу собрать ее воедино. Любая помощь очень ценится.