Phaser.io JSON 加载回调

Phaser.io JSON callback on load

我正在制作一个游戏,我将单位数据存储在 JSON 文件 units.json 中,我在 preload() 函数中将其加载到游戏中。我还有一个名为 setupUnitTextures() 的函数,它遍历 JSON 中的列表并加载所有单元。问题是,调用此函数时出现错误,因为 JSON 尚未加载。这是 preload() 函数:

function preload() {
    game.load.json('units', 'units.json');
    game.load.spritesheet('archer', 'assets/archer.png', 8, 8);
    setupUnitTextures();
}

我需要的是一种回调方法,所以当加载 JSON 时,它会通过调用 setupUnitTextures() 函数来加载纹理。有什么办法吗?

您可以使用 onLoadComplete 事件:

game.load.onLoadComplete.add(setupUnitTextures, this);

我的建议(我认为这也是 Phaser 开发的一般建议)是使用另一种状态来预加载以后需要的任何资产,然后您再进行预加载。

在某些模板中,这可能意味着具有 Boot 状态,然后是 Preloader 状态。这通常是加载栏的生成方式。

或者,您可能希望查看 Phaser's asset pack example 作为从 JSON 文件加载大量资产的替代方法。