我尝试制作一个脚本,如果我在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)
答案 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”的对象的原因。你在看错了吗?你忘了创造那个对象吗?
由于你没有提供相应的代码,我们无法告诉你。