Phaser3 平铺地图编辑器图像图层(不能使用图像图层作为背景)

问题描述 投票:0回答:1

我在平铺地图编辑器中创建了一个图像层,我将它放在地图上(我将使用它作为背景)我导出为json,我不能在phaser3中使用它,但是如何使用它。 我可以使用其他图层,我可以看到它们,但我看不到图像图层,从技术上讲,它不应该在我将其平铺放置的位置,预加载没有问题。

编辑;

javascript typescript phaser-framework tiled tmxtiledmap
1个回答
0
投票

您应该能够使用函数

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% 必要的话,我不会推荐它。

© www.soinside.com 2019 - 2024. All rights reserved.