如何在导出为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
相关产品推荐
相关产品推荐

