pyxen.storage
跨游戏会话持久化数据。保存最高分、设置、进度,或任何需要在游戏关闭并重新打开后保留的值。
storage.save("high_score", 9500)
storage.save("player_name", "Alice")
storage.save("sound_on", True)
score = storage.load("high_score") # 9500
name = storage.load("player_name") # "Alice"
missing = storage.load("no_key") # None
值以 int、float、string 或 bool 类型存储。不支持其他类型(列表、字典、对象)。
工作原理
在 iPad 和 Mac 上,存储以 storage.json 形式保存在 .pyxen 项目文件内部。数据随项目一起移动——如果你分享文件,保存的数据也会一起分享。
在网页播放器上,存储使用浏览器的 localStorage,按游戏区分。
存储在游戏停止时写入。你不需要手动刷新。
方法
| 方法 | 返回值 | 描述 |
|---|---|---|
save(key, value) | None | 以指定键保存值 |
load(key) | 值或 None | 加载值,如果键不存在则返回 None |
has(key) | bool | 检查键是否存在 |
delete(key) | None | 移除一个键 |
clear() | None | 移除所有键 |
save(key, value)
storage.save("score", 100)
storage.save("name", "Alice")
storage.save("ratio", 3.14)
storage.save("completed", True)
以指定字符串键保存值。如果键已存在,其值会被覆盖。
支持的类型:
| 类型 | 示例 |
|---|---|
int | storage.save("score", 100) |
float | storage.save("speed", 2.5) |
str | storage.save("name", "Alice") |
bool | storage.save("muted", False) |
传入任何其他类型(列表、字典等)会抛出 TypeError。
load(key)
score = storage.load("high_score")
返回与键关联的值,如果键不存在则返回 None。
返回的值与保存时的类型相同——int 返回 int,string 返回 string。
score = storage.load("high_score")
if score is None:
score = 0 # 第一次游玩
has(key)
if storage.has("high_score"):
log("Welcome back!")
如果键存在返回 True,否则返回 False。
delete(key)
storage.delete("old_setting")
从存储中移除一个键。如果键不存在,则不做任何操作。
clear()
storage.clear()
移除存储中的所有键。请谨慎使用。
示例
最高分
from pyxen import *
best = storage.load("best") or 0
score = 0
def update():
global score, best
score += 1
if score > best:
best = score
storage.save("best", best)
设置
from pyxen import *
sound_on = storage.load("sound") is not False
def update():
global sound_on
if input.keyboard.m.pressed:
sound_on = not sound_on
storage.save("sound", sound_on)
关卡进度
from pyxen import *
level = storage.load("level") or 1
def next_level():
global level
level += 1
storage.save("level", level)