Roblox 中数据存储获取问题

在 Roblox Studio 中涉及 dataStore 的问题。如果直接在脚本中通过 pointsStore:SetAsync("Mars", 19) 保存值,然后在输出数据时使用 data:GetCurrentPage(),就能输出这个值。但如果通过函数来保存值,尽管值被保存了,但在使用 data:GetCurrentPage() 时却无法输出。我应该如何保存用户数据?

在脚本中直接保存值:

PlayerPoints:SetAsync("Mars", 19)

local success, err = pcall(function()
    local Data = PlayerPoints:GetSortedAsync(false, 5)
    local WinsPage = Data:GetCurrentPage()

    print(WinsPage)
end)

在函数中直接保存值:

local function givePointsPlayer(player, points)
    local pointsOld = pointsStore:GetAsync(player.Name.."&"..tostring(player.UserId).."&"..tostring(os.date("*t").month))
    if (pointsOld == nil) then
        pointsOld = 0
    end
    print(pointsOld)
    local success, err = pcall(function()
        pointsStore:SetAsync(
            player.Name.."&"..tostring(player.UserId).."&"..tostring(os.date("*t").month),
            pointsOld + points
        )
    end)
end

EventEditPointsPlayer.OnServerEvent:Connect(function(player, points)
    givePointsPlayer(player, points)
end)

回答: 答案

我应该如何保存用户数据,使得可以通过 :GetCurrentPage() 输出?

点赞
用户15107943
用户15107943

如果你想从页面中获取数据,需要编写一些代码来遍历每个条目和页面。以下是来自 DevHub 教程的示例:

-- 将数据按每页三个条目降序排列
local pages = characterAgeStore:GetSortedAsync(false, 3)

while true do
    -- 获取当前(第一个)页面
    local data = pages:GetCurrentPage()
    -- 遍历页面上的所有键值对
    for _, entry in pairs(data) do
        print(entry.key .. ":" .. tostring(entry.value))
    end
    -- 检查是否已到达最后一页
    if pages.IsFinished then
        break
    else
        print("----------------")
        -- 转到下一页
        pages:AdvanceToNextPageAsync()
    end
end

有关更多信息,请参阅 Roblox DevHub 的本教程:https://developer.roblox.com/en-us/articles/Data-store

2021-04-05 12:06:40