因此,我正在尝试让我的游戏卸载大量未使用的资源。事实证明它要复杂得多。这是我的代码:
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,以重复此过程。 唯一的问题是它不起作用。我该如何工作?
答案 0 :(得分:1)
几乎可以确定范围问题,并且没有足够的源代码来确定根本原因。但是meteorCap
看起来像局部变量一样危险,因此无法从spawnMeteor
读取它。
此外,请勿使用setInterval,确切地说,Phaser API中内置有TimerEvents功能,这对游戏而言是安全的,并且可以为您管理作用域上下文。 Here is就是这样一个例子。