问题描述
所以我必须提出以下问题;我的项目结构是:
所以我正在用移相器制作一些游戏。在我的游戏场景中,我有一个名为 const AWS = require('aws-sdk');
AWS.config.update({
accessKeyId: 'XXXXX',secretAccessKey: 'XXXXXX',region: 'us-west-2',// Must be the same as your bucket
});
const s3Client = new AWS.S3();
的变量,它是一个数组的最大值,该数组随着游戏的进行和玩家获得更好的分数等存储所有分数。
所以它在我的 max
类的函数 create()
中。问题是每次玩家死亡时我都会执行 GameScene
,因此所有变量都会丢失它们的值并且我的最大值不是上次运行的最大值而是 0。
有没有办法解决这个问题? (我想将值存储到 index.html 文件,然后编写一个脚本,用所有值创建一个数组,然后找到该数组的最大值并将其打印出来。)
THNX 提前!
解决方法
最简单的事情可能不是让 max 成为场景的成员,而是让它在窗口上是全局的。所以像
if(window.max === undefined) {
window.max = 0
} else if(score > window.max) {
window.max = score;
}
在javascript窗口中是一个全局对象。
,您可以使用注册表的数据管理器在场景之间交换数据并在重新启动游戏之前设置您的最高分数。
在您的 StartScene 中初始化以创建您的最大值:
this.registry.set('max',0);
在重新开始前设置您的最高分数:
this.registry.set('max',this.score);
this.scene.restart()
检查需要更改的注册表并点击回调
this.registry.events.on('changedata',this.doStuff,this);
Registry data exchange example on docs.
这里还有 Rex 的 plugin for restorable data,您可以看看(以及许多其他好东西)。