在Phaser中切换状态之前是否需要杀死所有精灵?

时间:2015-04-24 04:13:15

标签: phaser-framework

我是否需要在Phaser中从状态A切换到状态B之前杀死所有精灵和动画,或者Phaser是否会自动清除它们?

4 个答案:

答案 0 :(得分:1)

Kamen Minkov的答案几乎是正确的,但您需要考虑的论点是clearWorld

如果将其设置为false,则在切换状态时所有对象都将保留在那里,有点像您同时设置了两个状态。否则,默认行为确实是在切换状态时销毁所有游戏对象。

clearCache是关于清除预加载的资产(意味着您必须再次预加载它们)。大多数时候你都想把它弄错,除非你为电影预装了大量的资产而你不再需要它们了;在这种情况下,从缓存中删除它们可能是一个释放一些内存的好主意。

答案 1 :(得分:0)

clearCache(第三个)有Phaser.StateManager.start()个bool参数,所以你很可能不需要手动做任何事情。

API Docs for StateManager

答案 2 :(得分:0)

Kill并不意味着清理内存清理。它与从游戏中移除精灵无关,它只是声明一个精灵被杀死并将其从视野中删除。我相信当您在状态之间切换时,Phaser会自动为您处理清理工作。

答案 3 :(得分:0)

你应该使用shutodown方法释放游戏状态所使用的内存,这是Phaser在更改状态时自动调用的。

示例:



MyState.prototype.shutdown = function () 
{
     this.background.destroy();    //Phaser.Image
     this.mySprite.destroy(true);  //Phaser.Sprite
     this.myImage.destroy(true);   //Phaser.Image
     this.game.cache.removeImage("image-I-wont-use-anymore", true);
};