如何在 Phaser 3 中将精灵存储在数组中?

How to store sprites in an array in Phaser 3?

我想将我游戏中的障碍物存储在一个数组中,这样我就可以生成一个随机数并从该数组中随机抽取一个精灵。所以这是我的问题:

  1. 如何将精灵存储在数组中?
  2. 如何获取和使用数组中的精灵?

1) 您可以创建精灵,然后将其存储在数组中

let arr = [];
let sprite1 = this.add.image(400, 300, 'spritekey1');
arr.push(sprite1);
let sprite2 = this.add.image(400, 300, 'spritekey2');
arr.push(sprite2);
let sprite3 = this.add.image(400, 300, 'spritekey3');
arr.push(sprite3);

// To get Random element from array use Phaser's Utility function
let randomSprite = Phaser.Utils.Array.GetRandom(arr);

2) 或者你可以这样创建组

let group = this.add.group();
let sprite1 = this.add.image(400, 300, 'spritekey1');
let sprite2 = this.add.image(400, 300, 'spritekey2');
let sprite3 = this.add.image(400, 300, 'spritekey3');    
group.add(sprite1);
group.add(sprite2);
group.add(sprite3);

// group.getChildren() returns an array
let randomSprite = Phaser.Utils.Array.GetRandom(group.getChildren());

组示例 here 会很有用。 组 Documentation.

使用 Phaser 提供的效用函数来获取随机元素是最简单直接 方法. Phaser.Util.Array.GetRandom()documentation.