简介:
本帖用于老玩家更快上手新版存储的使用,而非存储教学,以下文章将全面性解析新版存储的使用。
新版存储结构
以MapId为根目录
9 “Key”(String类型) (一级Key为开发者自定义名称的数据空间) (二级key默认为global,不开放玩家改变)
9 (三级Key 对应指定Value, 单个Key只对应唯一对象)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型)
9 “Key”(String类型) -- Value (不限制数据类型)
9 “Key”(String类型) -- Value (不限制数据类型)
“Key”(String类型) -- Value (不限制数据类型
结构描述:
MapId为根目录,从根目录开始索引存储空间。
第一级Key为存储空间Id,也就是我们创造的一个空间。
第二级Key为默认,不对外开放。
第三级Key 为一个String型的Key,且对应一个唯一的Value。
思想转换:
旧版存储的核心思想为将所有数据都存储在玩家信息存储下,以玩家Id为1级Key 进行数据存储。
新版存储的核心思想转变为对象思想。不再将数据都存储在玩家信息存储下,而是单独创建出一个存储空间,将对应数据存储存储空间内。
接口新增
1.数据存储服务的函数如下:
DataStoreService
FindDataStore(key) --创建新的数据存储空间,可自己给空间定义名字
FindRankDataStore(key) --创建排行榜存储空间找默认存储空间
GetDefaultDataStore() --寻找默认存储空间
特殊说明:没有给1级Key存储空间命名的话被分配到默认存储空间。
命名数据存储空间:FindDataStore(key)
local dataStore = DataStoreService:FindDataStore("DataTest")
命名排名存储空间:FindRankDataStore(key)
local rankStore = DataStoreService:FindRankDataStore("RankTest")
返回默认数据存储空间:GetDefaultDataStore()
local defaultDataStore = DataStoreService:GetDefaultDataStore()
2.数据存储空间下的函数请点击下方链接
3.排行存储空间下的函数请点击下方链接
接口转换:
旧版存储存储信息方式为
PlayerStoreData:SetValue(id,”jinbi”,100) PlayerStoreData:GetValue(id,jinbi)
新版存储方式为
local goldStore=DataStoreService:FindDataStore(“jinbi”)
--在存储服务中创建数据存储空间,如果想进行排行的话就创建排行存储空间
goldStore:Set(id,100)
--用变量goldStore代指 :在信息存储服务下创建一个 名为”jinbi”的存储空间
然后将对应的key 和 Value 存入该空间内。
存储空间可以根据类型创建多个,key也可以创建多个,但是三级key只对应一种value。
取值的思想是通过调取1级key的存储空间,再从3级Key开始寻找
local a=goldStore:Get(id)
注意事项
1、在编辑器调用数据存储服务时,必须将地图发布后才能正常使用。开发者需要打开我的项目里的已上传项目才能正常使用数据存储服务,如果打开本地项目是不能使用数据存储的。
2、如果开发者没有发布地图,无论是否保存,编辑器端的数据存储功能都不能使用。开发者运行游戏测试数据存储时的提示信息:“需要将地图发布后才能正常使用数据存储”。
3、为了减轻服务器压力,数据存储服务的存储频率要加以限制,最多每秒10次存储请求。
4、数据存储服务是短链服务,在联网环境下能正常使用。在断网环境下,数据存储的请求可以发送但是得不到回复,会报错。
5、数据存储的条目即key数没有限制,单个value的容量最大为16K。
6、单机游戏的数据存储不能写到PlayerLeave:Connect(function(Playerid))事件里,单机游戏的数据存储请自行设计存储时机。多人游戏的数据存储可以写到PlayerLeave:Connect(function(Playerid))事件里,但是在服务器关闭前最多有30s的时间去执函数。另外,PlayerLeave:Connect(function(Playerid))事件里不能用wait()函数。
本帖最后由 开会你是不是没听_轩哥 于 2020-05-13 17:26 编辑
请登录后评论~