微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 js 到 html 的变量以在死亡和重新启动游戏场景/phaser-js 后保存值/丢失最大值

如何解决从 js 到 html 的变量以在死亡和重新启动游戏场景/phaser-js 后保存值/丢失最大值

所以我必须提出以下问题;我的项目结构是:

  • index.html
  • StartScene.js
  • GameScene.js
  • game.js
  • 2 张图片 (png) 用于媒体文件

所以我正在用移相器制作一些游戏。在我的游戏场景中,我有一个名为 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,您可以看看(以及许多其他好东西)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。