You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为MinerTest网页游戏实现基于Cookies的进度保存?

使用Cookies保存MinerTest游戏数据的方案

一、Cookies存储的核心逻辑

Cookies是浏览器内置的本地存储方案,和localStorage的核心差异及适配场景:

  • 单条Cookie容量限制在4KB左右,适合存储coins、machines这类游戏核心状态的小体量数据
  • 可自定义过期时间,默认关闭浏览器后失效,但我们可以手动设置30天甚至更久,确保用户下次打开页面数据不丢失
  • 结构化数据(比如数组、对象)需要先转成JSON字符串才能存储,读取时再解析回原格式

二、可直接复用的代码实现(适配Glitch环境)

Glitch的静态页面环境完全支持原生JS操作Cookie,无需额外配置,直接将以下代码整合到你的游戏脚本中即可:

1. 核心工具函数

// 将游戏数据写入Cookie
function saveGameDataToCookie(data) {
  const jsonStr = JSON.stringify(data);
  // 设置30天有效期,可根据需求调整时长
  const expiryDate = new Date();
  expiryDate.setTime(expiryDate.getTime() + 30 * 24 * 60 * 60 * 1000);
  // 编码避免特殊字符冲突,设置根路径确保全站可读取
  document.cookie = `minerTestData=${encodeURIComponent(jsonStr)}; expires=${expiryDate.toUTCString()}; path=/; SameSite=Lax`;
}

// 从Cookie读取游戏数据,无数据或解析失败时返回初始状态
function loadGameDataFromCookie() {
  const targetCookieName = "minerTestData=";
  const decodedCookies = decodeURIComponent(document.cookie).split(';');
  
  for (let cookie of decodedCookies) {
    cookie = cookie.trim();
    if (cookie.startsWith(targetCookieName)) {
      try {
        return JSON.parse(cookie.slice(targetCookieName.length));
      } catch (err) {
        return getDefaultGameData();
      }
    }
  }
  return getDefaultGameData();
}

// 游戏初始状态模板,根据你的游戏结构调整字段
function getDefaultGameData() {
  return {
    coins: 0,
    machines: [],
    drills: []
  };
}

2. 绑定页面事件实现自动存读

// 页面加载时自动读取数据初始化游戏
window.addEventListener('load', () => {
  const savedData = loadGameDataFromCookie();
  // 替换为你实际的游戏初始化函数
  initGame(savedData);
});

// 页面关闭/刷新前自动保存当前游戏状态
window.addEventListener('beforeunload', () => {
  // 替换为你获取当前游戏状态的逻辑(比如从全局状态变量中读取)
  const currentGameData = {
    coins: gameState.coins,
    machines: gameState.machines,
    drills: gameState.drills
  };
  saveGameDataToCookie(currentGameData);
});

// 示例:游戏初始化函数(需根据实际逻辑修改)
function initGame(data) {
  gameState = { ...data };
  // 这里编写更新UI、初始化机器/钻头实例的代码
}

三、Glitch环境下的注意事项

  • 测试时可通过浏览器开发者工具(F12)的「Application → Cookies」面板,查看数据是否正确存储
  • 若machines、drills数据量较大,建议精简存储内容(比如只存等级、数量等核心字段,剔除UI相关冗余数据),避免超过4KB的Cookie容量限制
  • SameSite=Lax是现代浏览器的安全规范要求,缺失可能导致Cookie存储失败

内容的提问来源于stack exchange,提问作者RisingPhoinex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:35:04