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

为何Phaser中this.add.group({})在教程正常,我的游戏却仅渲染1个tile?

Phaser中add.group仅渲染单个tile的原因及解决方法

你遇到的问题是因为setXY配置里的stepY值设置过大,导致后续的tile被渲染到了游戏画布之外,所以看起来只有1个tile显示。

你的代码:

let gameScene = new Phaser.Scene('Game');

gameScene.preload = function() {
    this.load.image('background', 'assets/backgrounds/beach/game_background_1.png');
    this.load.image('tile', 'assets/images/tile.png');
}

gameScene.create = function() {
    let bg = this.add.sprite(0, 0, 'background').setOrigin(0, 0);
    this.tiles = this.add.group({
        key: 'tile',
        repeat: 5,
        setXY: {
            x: 150,
            y: this.sys.game.config.height - 80,
            stepX: 150,
            stepY: this.sys.game.config.height - 80, // 问题核心所在
        }
    });

    Phaser.Actions.ScaleXY(this.tiles.getChildren(), -0.5, -0.5);
}

gameScene.update = function() { }

教程代码对比:

gameScene.preload = function(){
  // load images
  ...
  ...
  this.load.image('enemy', 'assets/dragon.png');
  ...
};

gameScene.create = function() {
    this.enemies = this.add.group({
      key: 'enemy',
      repeat: 5,
      setXY: {
        x: 90,
        y: 100,
        stepX: 80,
        stepY: 20 // 教程使用小步长,元素均在画布可见范围内
    }
  });

  Phaser.Actions.ScaleXY(this.enemies.getChildren(), -0.4, -0.4);
}

原因分析:

你设置的stepY: this.sys.game.config.height - 80意味着每个新tile的Y坐标会在前一个的基础上增加整个画布高度减80的数值。第一个tile的Y坐标刚好在画布底部附近,第二个tile的Y坐标直接变成(画布高度-80) + (画布高度-80),完全超出了画布可见范围,后续tile同理,因此只有第一个tile能被看到。

解决方案:

根据布局需求修改stepY的值:

  • 若要水平排列(同一行),将stepY设为0:
    setXY: {
        x: 150,
        y: this.sys.game.config.height - 80,
        stepX: 150,
        stepY: 0,
    }
    
  • 若要垂直排列,设置一个与tile尺寸匹配的小步长:
    setXY: {
        x: 150,
        y: this.sys.game.config.height - 80,
        stepX: 0, // 保持同一水平位置
        stepY: -80, // 向上排列,设为80则向下排列
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:53:36