Один из методов, который мне нравится использовать, - это Phaser.Plugins.BasePlugin
.
class Player extends Phaser.Plugins.BasePlugin {
constructor(pluginManager) {
super(pluginManager);
//initialize player state
}
//Additional methods for getting managing player data
isAlive() { return true; }
}
//in your JS entry file
let config = {
type: Phaser.AUTO,
parent: 'game'
},
plugins: {
global: [ //make the Player global to all scenes (and other plugins)
// key is plugin key, plugin is class, start true/false if there
// is a start method to run, mapping is the name tagged of this
// to access the plugin class
{ key: 'Player', plugin: Player, start: false, mapping: 'player'}
]
}
};
//In the scene
class MyScene extends Phaser.Scene {
update(){
if(this.player.isAlive()) {
//do some stuff
}
}
}
Я также включил сохранение состояния в локальное хранилище для своих плагинов. Это может быть полезно для плагинов, связанных с состоянием квестов прогресса инвентаря игрока между игровыми сессиями.