创造你的世界
数据存储
世界数据存储
7分
zepeto的datastorage是一个远程数据库,按世界基础存储和管理用户的游戏数据。 它适合存储需要在多个游戏会话中维护或更新的用户游戏数据,因为它是由用户id存储和管理的。 使用 api https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/ 管理用户的游戏数据, 您可以从zepeto studio的世界数据管理菜单中查看和修改存储在data storage中的用户特定游戏数据。 📘 请参考以下指南。 \[ 世界数据管理 docid\ a6ri 4b3ojfzixkwqwysp ] 数据存储api 📘 请参考以下api文档。 zepeto multiplay datastorage api https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage 请填写服务器代码 index ts sandbox。 在 unity 编辑器环境中的本地服务器上,当服务器关闭并重新运行时,数据不会被保留。 在世界部署后,数据存储在 zepeto 数据库中并保持。 如果不满足以下规则,数据将不会被保存: 未提供值 输入了无法存储的值 数据存储限制 键长度限制:50 个字符 键中只允许字母、数字和下划线 ( ) 最大键数:每个用户 id 1000 个 最大值数据大小:500,000 个字符 请注意,值数据在实际服务器上存储时与内部标识符一起序列化。请留有安全余量。 读取 / 写入 / 删除单个键的数据 您可以使用 datastorage get https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/#get , datastorage set https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/#set 和 datastorage remove https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/#remove import { datastorage } from 'zepeto multiplay datastorage'; export default class extends sandbox { // async onjoin(client sandboxplayer) { // 加载本地玩家的数据存储 const playerstorage datastorage = client loaddatastorage(); // 获取与键 'level' 关联的值 	 let playerlevel = await playerstorage get("level") as number; if (playerlevel == null) { playerlevel += 1; } // 存储递增的值 await playerstorage set("level", playerlevel); // 移除数据 await playerstorage remove("level"); } } 读取/写入多个键的数据 您可以使用 datastorage mget https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/#mget 和 datastorage mset https //developer zepeto me/docs/multiplay server/interfaces/zepeto multiplay datastorage datastorage/#mset import { datastorage } from 'zepeto multiplay datastorage'; export default class extends sandbox { // async onjoin(client sandboxplayer) { const storage = client loaddatastorage(); // mset (多键值) 存储 const success = await storage mset\<number>(\[ { key 'key1', value 1 }, { key 'key2', value 2 } ]); // 如果成功 if (success) { // 一次获取 key1 和 key2 的值 const keys = \['key1', 'key2']; const keyvaleus = await storage mget(keys); keys foreach(key => { const value = keyvaleus\[key]; console log(value); }); } } } 错误处理 您可以通过参考在 datastorageerror https //developer zepeto me/docs/multiplay server/enums/zepeto multiplay datastorage datastorageerror 中定义的错误类型来实现对调用 datastorage api 时发生的异常的适当处理。 import { datastorage } from 'zepeto multiplay datastorage'; export default class extends sandbox { // async onjoin(client sandboxplayer) { // 加载本地玩家的数据存储 const playerstorage datastorage = client loaddatastorage(); try { let playerlevel = await playerstorage get("level") as number; } catch (error) { let systemerror = (error as systemerror); if (systemerror code === datastorageerror unknown || systemerror code === datastorageerror networkerror) { // 系统错误或网络错误 console log(systemerror message); } else if (systemerror code === datastorageerror keyconstraintviolated) { // 键约束被违反 console log(systemerror message); } else if (systemerror code === datastorageerror valueconstraintviolated) { // 值约束被违反 console log(systemerror message); } } } } 通过用户id访问数据存储 也可以通过用户id访问特定用户的数据存储,使用 datastorage loaddatastorage https //developer zepeto me/docs/multiplay server/namespaces/zepeto multiplay datastorage? highlight=loaddatastorage#loaddatastorage , 而不是本地玩家的数据存储。 const userstorage datastorage = await loaddatastorage(userid); 👍 提示 如果您想在不同的世界之间存储数据,请使用 来自multiplay服务器的http请求 docid\ bp1fjfpleiahmnzda9mvk