尝试索引TextBox会导致nil值

时间:2017-08-04 11:01:08

标签: lua textbox roblox

我尝试制作一个脚本,如果我在TextBox中写一个名字  他/她将死在服务器中的玩家,但它给了我这个错误:

  

尝试索引本地' textBox' (零值)

这是我的剧本:

local screenGui = script.Parent
local textBox = screenGui:FindFirstChild("TextBox", true)

textBox.FocusLost:Connect(function(enterPressed)
  --[[This function is called every time the TextBox is "unfocused". A TextBox is "focused" when the player is typing in it, and "unfocused" when they're doing something else.]]
  --[[a parameter is passed to this function, "enterPressed". This is true if the player unfocused the TextBox by pressing enter. Another way to unfocus it is by clicking somewhere outside it.]]

  --Try to find a player with the name of whatever is in the TextBox
  local player = game.Players:FindFirstChild(textBox.Text)
  if player then --Check if we found that player
    local character = player.Character
    local humanoid = character:FindFirstChild("Humanoid") --try to find the humanoid

    if humanoid then --check if we found that humanoid
      humanoid.Health = 0 --kill the humanoid
    end
  end
end)

1 个答案:

答案 0 :(得分:3)

  

尝试索引本地'textBox'(零值)

此错误消息告诉您正在为名为nil的{​​{1}}值编制索引。

所以转到你索引textBox的第一行,即:

textBox

为什么textBox textBox.FocusLost:Connect(function(enterPressed) 在这一行?好吧,让我们看看我们在该行之前将值设置为nil的位置。

textBox

很明显screenGui:FindFirstChild返回nil。

请参阅参考手册http://wiki.roblox.com/index.php?title=API:Class/Instance/FindFirstChild&redirect=no

我们在这里读到:

  

返回找到的具有给定名称的第一个子项,如果没有,则返回 nil   孩子存在。如果可选的递归参数为true,则递归   在搜索时下降层次结构而不是仅搜索   直接对象。

因此,根据参考手册,您没有名为“TextBlock”的子项,因此找不到。

首先,如果这可能是零,你可能想要确保textBox不是你的索引。

local textBox = screenGui:FindFirstChild("TextBox", true)

你已经为人形btw做了这个:

if textBox then
  textBox.someFancyIndex()
end

那么为什么不用于textBox?

当然,你必须找出你没有名为“TextBox”的对象的原因。你在看错了吗?你忘了创造那个对象吗?

由于你没有提供相应的代码,我们无法告诉你。