DataStore 无法保存 GUI 设置

问题描述 投票:0回答:1

所以我一直在 roblox 中制作完全基于 gui 字体查看器的游戏,我添加了一个主题选项,很快就会添加一个文字编辑器,现在让我们关注主题,我有 2 个主题,默认主题和绿色主题,以及通往其中每一个都是 game.startergui.screengui.themeframe.default 游戏.startergui.screengui.themeframe.gren

当我在这些之间进行更改时,它可以工作,但是当我重新加入时,默认主题始终显示 非常感谢您的帮助

我尝试了chatgpt,但chatgpt的代码永远无法工作。

lua roblox datastore roblox-studio
1个回答
0
投票

需要注意的是,数据存储可以存储您想要的任何类型的数据(如果您对其进行编码)。在您的情况下,您似乎只想存储一个字符串,这是用户选择的主题。假设这是一个客户端应用程序,您将需要一个远程事件来获取主题,并需要一个远程事件来设置主题。这是因为数据存储只能从服务器访问。

Roblox 文档包含有关远程事件和回调以及数据存储的文章。

这里是我编写的一些代码,用于通过名为

GetTheme
的远程事件和名为
UpdateTheme
的远程函数处理从数据存储中保存和检索数据,这两个函数都位于
ReplicatedStorage
内部。脚本本身应该作为服务器端脚本位于
ServerScriptService
中。

local THEME_DATASTORE_NAME = "Themes"

local DataStoreService = game:GetService("DataStoreService")
local themeDataStore = DataStoreService:GetDataStore(THEME_DATASTORE_NAME)

local getThemeEvent = game.ReplicatedStorage.GetTheme
local updateThemeFunction = game.ReplicatedStorage.UpdateTheme

-- We want to return true if this was successful, and false if it was not,
-- so that the client can display an appropriate error to the user.
updateThemeFunction.OnInvoke = function(player, theme)
    if theme == "default" or theme == "green" then
        local wasSuccess, result = pcall(function()
            themeDataStore:SetAsync(player.UserId, theme)
        end)

        if not wasSuccess then
            print("Unable to save data to data-store: " .. result)
        end

        return wasSuccess
    end

    return false
end

getThemeEvent.OnServerEvent:Connect(function(player)
    -- Retrieve the theme that the user saved
    return themeDataStore:GetAsync(player.UserId) or "default"
end)
© www.soinside.com 2019 - 2024. All rights reserved.