Roblox:BindToClose 有效,PlayerRemoving 无效

Posted

技术标签:

【中文标题】Roblox:BindToClose 有效,PlayerRemoving 无效【英文标题】:Roblox: BindToClose works, PlayerRemoving does not 【发布时间】:2021-02-27 08:47:16 【问题描述】:

我正在尝试将 CFrame X、Y 和 Z 数据存储到 DataStore 中,以便玩家可以从他们离开的地方开始。我正在通过尝试保存硬编码值进行测试。

使用 PlayerAdded 加载数据工作正常。

由于某种原因,当玩家离开游戏或工作室时,PlayerRemoving 中的 SetAsync() 没有完成。奇怪的是,当我添加 BindToClose 时,保存功能在 Studio 中正常运行,但在游戏中不运行。

如果有人能告诉我原因,我将不胜感激。

local function save(plr)
    local data = 
        CFrameX = -1232;
        CFrameY = 1232;
        CFrameZ = -1235;
    

    local success, errormessage = pcall(function()
        MandoSimStore:SetAsync(plr.UserId.."-Location_StorageData", data)
    end)

    if success then
        print("Successfully saved data!")
    else
        warn("ERROR: "..errormessage)
    end
end

local gameShutDown = false

game.Players.PlayerRemoving:Connect(function(plr)
    wait(0.1)
    if not gameShutDown then
        save(plr)
    end
end)

game:BindToClose(function()
    gameShutDown = true
    for _, plr in ipairs(game.Players:GetPlayers()) do
        save(plr)
    end
end)

【问题讨论】:

您可能遇到了时间问题。可能是游戏在您的数据正确保存之前关闭。要进行调试,请尝试将 wait(10) 添加到 game:BindToClose 函数。 刚试了下,游戏还是不能保存在游戏里,但是能保存在Studio里。 【参考方案1】:

不妨试试

wait(1)

它对我有用

【讨论】:

以上是关于Roblox:BindToClose 有效,PlayerRemoving 无效的主要内容,如果未能解决你的问题,请参考以下文章

船产卵(Roblox Studio)

为啥我的roblox gui在studio的测试区显示而在游戏中却没有

无法在 C# 中终止进程?

如何修复 roblox api 请求中被拒绝的授权! [Node.js] [Roblox]

元宇宙系列Roblox创世纪(Mateverse)

Roblox:从 ​​Trello 编辑/删除卡片