我在平铺地图编辑器中创建了一个图像层,我将它放在地图上(我将使用它作为背景)我导出为json,我不能在phaser3中使用它,但是如何使用它。 我可以使用其他图层,我可以看到它们,但我看不到图像图层,从技术上讲,它不应该在我将其平铺放置的位置,预加载没有问题。
编辑;
您应该能够使用函数
getImageLayerNames
链接到文档从图像层获取图像名称,但我不确定它是如何工作的,因为我从未尝试过。
更新: 我现在尝试过,您只需要从
images
对象的属性 map
获取图像名称。
迷你代码:
let map = this.add.tilemap('map');
// if you know the imagelayer name, if not use the "getImageLayerNames" function to find the naes
let bgName = 'BG';
let imageOfImageLayer = map.images.find(layer => layer.name == bgName );
// maybe check if it was found or not
您需要预加载第一个(或稍后以更复杂的方式加载)。如果您使用文件名作为密钥,那就很容易了。
例如:
preload(){
this.load.image('bg.png', 'bg.png')
// ...
}
并在
create
函数中将它们设置为任何其他图像,使用 this.add.image(...)
以及图层中的值。
更新2:
您必须添加图像,最好在
create
功能中添加。像这样的:
const BG_KEY = "background";
class MyScene extends Phaser.Scene {
...
preload(){
this.load.image(BG_KEY , 'bg.png')
// ...
}
create(){
this.map = this.add.tilemap('map');
// ...
let imageOfImageLayer = this.map.images.find(
(layer) => layer.name == BG_KEY
);
this.add.image(imageOfImageLayer.x, imageOfImageLayer.y, imageOfImageLayer.name)
.setOrigin(0,0);
// ...
}
顺便说一句:如果您想手动加载图像而不使用
功能(因为您想使用平铺文件中提供的文件名),您可以查看这个官方移相器示例,它展示了如何手动加载图像加载图像,在preload
之后。preload
这需要做很多工作,所以如果不是 100% 必要的话,我不会推荐它。