You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Phaser加载Tiled导出Tilemap仅显示黑屏,求技术排查解决

排查Phaser 3加载Tiled JSON Tilemap黑屏问题

以下是针对你遇到的问题的具体排查和解决步骤:

  • 检查Tiled图层可见性
    打开Tiled编辑器,确认所有需要显示的图层都勾选了「可见」选项。导出JSON时,隐藏的图层会被标记为visible: false,Phaser不会渲染这类图层。重新导出时要确保目标图层处于可见状态。

  • 验证Tileset路径匹配
    确认Tiled导出的JSON中,tileset的image字段路径与Phaser加载路径一致。比如你将tilesheet放在public/assets/tilesheet.png,JSON中image字段应设为tilesheet.png(或相对路径assets/tilesheet.png,根据项目结构调整)。Phaser加载代码需对应:

    this.load.image('tiles', 'assets/tilesheet.png');
    

    添加tileset时要确保Tiled中设置的tileset名称与addTilesetImage的第一个参数完全匹配。

  • 确认相机与地图尺寸对齐
    打印map.widthInPixels和map.heightInPixels,确认地图实际尺寸不为0。然后设置相机边界并定位到地图可视区域:

    this.cameras.main.setBounds(0, 0, map.widthInPixels, map.heightInPixels);
    // 直接将相机移动到地图中心
    this.cameras.main.centerOn(map.widthInPixels / 2, map.heightInPixels / 2);
    
  • 检查图层渲染配置
    确保正确创建并添加图层到场景,同时设置合理的层级:

    const tileset = map.addTilesetImage('你的tileset名称', 'tiles');
    const groundLayer = map.createLayer('你的图层名称', tileset, 0, 0);
    // 确保图层处于可见层级
    groundLayer.setDepth(0);
    

    注意对象层不会自动渲染tiles,需手动处理对象的显示逻辑。

  • 核对Phaser版本兼容性
    克隆的示例仓库可能使用特定版本的Phaser,与你本地项目版本不兼容导致API失效。查看示例仓库的package.json中的Phaser版本,安装对应版本测试:

    npm install phaser@对应版本号
    
  • 检查画布与缩放设置
    确认游戏配置的画布尺寸能容纳地图,或开启自适应缩放:

    const config = {
      type: Phaser.AUTO,
      width: 800,
      height: 600,
      scale: {
        mode: Phaser.Scale.FIT,
        autoCenter: Phaser.Scale.CENTER_BOTH
      },
      scene: { preload: preload, create: create }
    };
    

    也可尝试缩小相机缩放比例,排查是否地图超出画布范围:

    this.cameras.main.setZoom(0.5);
    
  • 验证Tilesheet格式
    确保tilesheet的宽高是单个tile尺寸的整数倍(比如tile为16x16,tilesheet宽度应为16的倍数)。Tiled中设置的tile大小需与实际tilesheet的tile尺寸一致,避免渲染偏移或不显示。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:23:22