为什么我的可绑定函数会出现错误"attempt to call a nil value"?

为一个 roblox lua 游戏。

我正在尝试创建一个可绑定函数,当玩家点击文本框后,在文本框中输入一些文字,然后单击回车按钮将该文字存储在服务器上,并在输出中打印出来。现在,输入方面的所有内容都有效,甚至在 surfacegui 上打印出来。问题是,如果我尝试运行代码,就会出现错误"attempt to call a nil value"。下面是我用于在框中输入的 Invoke 代码。

local screenTextBox = script.Parent -- 文本框在屏幕上的位置
local partTextLabel = game.Workspace.BlueTeamGameRoom.BlueGameBoard.Board.SurfaceGui.TextBox -- 文本块上文字的位置

while true do --代码以更新 screengui
    wait(.5)--等待,以防 roblox studio 自己翻车
screenTextBox.FocusLost:connect()--点击文本框
    partTextLabel.Text = screenTextBox.Text -- 改变文字
end

screenTextBox.FocusLost:connect(function(enterPressed) --在玩家点击框的参数中定义 enterpressed(单击 enter)
    if enterPressed then
        local DBallz = game.ReplicatedStorage.answerVerify:Invoke() --调用可绑定函数

        print(DBallz)--打印可绑定函数的返回值
    end
end)

这是我的 OnInvoke 代码,用于在框中打印该单词

game.ReplicatedStorage.answerVerify.OnInvoke = function()
    local Text = game.StarterGui.ScreenGui.wordSend.TextBox.Text --定义文本框中的文本属性

    return Text --将文本发送到本地脚本
end

我试过使用 InvokeServer 和 OnServerInvoke,但没有任何区别。我还尝试过使用不同方式编写键映射,但也不起作用。Invoke 代码在一个局部脚本中,是用户必须输入的文本框的子代。而 OnInvoke 代码则是常规的服务器端脚本,是 workspace 的子代。

点赞
用户2858170
用户2858170

在您的代码中,我看到了这个:

screenTextBox.FocusLost:connect()

你应该在这里提供一个函数。因此,一旦您的文本框失去焦点,Roblox将调用事件侦听器,该侦听器恰好为nil。

顺便问一下,你为什么要在循环中这样做呢?这对我来说没有意义。

2021-06-08 09:17:36