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

如何在导出为HTML5的Godot游戏中读写LocalStorage数据?

在Godot HTML5导出版本中直接操作浏览器LocalStorage实现跨游戏物品互通

要在Godot HTML5导出版中直接读写浏览器LocalStorage的coins变量,核心是通过Godot的JavaScript互操作能力调用浏览器API,以下是具体实现步骤和代码:

核心思路

浏览器LocalStorage仅支持存储字符串,读写时需做类型转换;所有互通的游戏必须部署在同一域名下(受浏览器同源策略限制)。

1. 读取LocalStorage中的coins值

调用浏览器JS API读取coins,若变量不存在则默认设为0:

# Godot 4.x 版本
func read_coins_from_localstorage() -> int:
    var coins_str = JavaScript.eval('localStorage.getItem("coins") || "0"')
    return int(coins_str)

# Godot 3.x 版本
func read_coins_from_localstorage() -> int:
    var coins_str = OS.execute_javascript('localStorage.getItem("coins") || "0"')
    return int(coins_str)

2. 修改并写回LocalStorage

读取值后执行增减操作,再将结果转回字符串存回:

# Godot 4.x 版本
func add_coins(amount: int):
    var current_coins = read_coins_from_localstorage()
    var new_coins = current_coins + amount
    JavaScript.eval('localStorage.setItem("coins", "%s")' % str(new_coins))

# Godot 3.x 版本
func add_coins(amount: int):
    var current_coins = read_coins_from_localstorage()
    var new_coins = current_coins + amount
    OS.execute_javascript('localStorage.setItem("coins", "%s")' % str(new_coins))

3. 测试示例

绑定按钮信号快速验证功能:

# 按钮点击时增加10 coins
func _on_add_coins_button_pressed():
    add_coins(10)
    print("当前coins: ", read_coins_from_localstorage())

常见问题排查

  • 必须在浏览器环境运行:本地直接打开导出的HTML文件可能因同源限制失效,建议用本地服务器(如python -m http.server)启动
  • 域名一致性:跨游戏互通要求所有游戏部署在同一域名(含子域名、端口)下
  • 类型校验:确保coins始终存储为数字字符串,避免转换时出现报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:22:09