Я сгущу свой ответ, чтобы сделать его пригодным для использования.
Phaser 2 утверждает, что большинство объектов может быть просто разыменовано путем присвоения нулям их ссылок, и это должно вызвать сборку мусора.
Вместо этого другим, таким как TilemapLayers, явно понадобятся конкретные их деструкторы для вызова.
Другие, такие как Частица, могут быть уничтожены (например, Particle.kill()
).
Однако, как вы выяснили, автоматический сборщик мусора не всегда хорош, и особенно если вы длительное время держите браузер открытым, он теряет память.
Таким образом, вы должны убивать, останавливать, удалять и уничтожать все, даже необязательные объекты . Даже если вы не найдете конкретного деструктора, большинство объектов наследуются от PIXI.DisplayObject и поэтому реализуют .RemoveChild
и варианты. Особенно родитель Phaser.Stage
иди сюда: https://phaser.io/learn/chains
Поиск в этих: destroy
removeAll
.stage.remove
(и remove
со всеми его префиксами и суффиксами, включая removeChild и варианты) stop
kill
.
Если вы не нашли конкретного деструктора, запомните наследование PIXI.DisplayObject и removeChild / ren.
Также не забывайте вызывать Stage.removeStageReference()
при выходе.
Надеюсь, это поможет