相位器3:摧毁精灵的所有实例



所以我试图让我的游戏卸载一堆未使用的资源。事实证明,这要复杂得多。这是我的代码:

 var meteor = this.physics.add.group();
 this.physics.add.collider(meteor, sput, deathControl, null, this);
 meteorSpawnFrequency = 500;
 setInterval(spawnMeteor, meteorSpawnFrequency);
 var meteorCap = 0;
 function spawnMeteor() {  
 //Create Meteors
    meteorCap++;
    meteors = meteor.create(Math.floor(Math.random() *800) + 1, 30, "meteor");
    //Edit Meteors
    meteors.depth = -1;
    meteors.setVelocityY(500);
    meteors.setScale(Math.floor(Math.random() * 2) + 1);
    meteors.setCollideWorldBounds(true);
    //Destroy meteors after the cap reaches 10
    if(meteorCap > 10){
        meteors.destroy();
        console.log("meteors destroyed");
        meteorCap = 0;
    }
}

我正在使用间隔来生成精灵,所有这些都很好用。我想做的是设置一个上限,当100颗流星出现时,它们会被摧毁,上限被设定回0,重复这个过程。唯一的问题是它不起作用。我如何让它工作?

几乎可以肯定是范围问题,并且没有足够的源代码显示来确定根本原因。但是meteorCap看起来像一个局部变量一样危险,所以从spawnMeteor读取它是行不通的。

另外,不要使用 setInterval,实际上,Phaser API 中内置了一个 TimerEvents 功能,该功能在游戏步骤中是安全的,并为您管理范围上下文。这是一个这样的例子。

相关内容

  • 没有找到相关文章

最新更新