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 文件加载大量资产的替代方法。
我正在制作一个游戏,我将单位数据存储在 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 文件加载大量资产的替代方法。