我是否需要在Phaser中从状态A切换到状态B之前杀死所有精灵和动画,或者Phaser是否会自动清除它们?
答案 0 :(得分:1)
Kamen Minkov的答案几乎是正确的,但您需要考虑的论点是clearWorld
。
如果将其设置为false,则在切换状态时所有对象都将保留在那里,有点像您同时设置了两个状态。否则,默认行为确实是在切换状态时销毁所有游戏对象。
clearCache
是关于清除预加载的资产(意味着您必须再次预加载它们)。大多数时候你都想把它弄错,除非你为电影预装了大量的资产而你不再需要它们了;在这种情况下,从缓存中删除它们可能是一个释放一些内存的好主意。
答案 1 :(得分:0)
clearCache
(第三个)有Phaser.StateManager.start()
个bool参数,所以你很可能不需要手动做任何事情。
答案 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);
};