local claim = script.Parent.Parent.Parent.Parent.StandMesh.Claim
这将触发Proximty Prompt。
claim.Triggered:Connect(function(player)
local screengui = player.PlayerGui:WaitForChild('Popups')
local popup = player.PlayerGui:WaitForChild('Popups').ClaimedBooth
local bool = player:WaitForChild('Values').Claimed
"可能的无限产量";是一个警告。它可以让您知道您的代码是不安全的,并且当执行此代码时,Values
对象不存在(或拼写错误(的时间超过5秒,并且player:WaitForChild('Values')
无法解析为对象。
实例:WaitForChild((的文档是这样说的:
票据
- 如果对该函数的调用超过5秒而没有返回,并且没有指定timeOut参数,则会在输出中打印一条警告,警告线程可能会无限期地产生;此警告的形式为"X:WaitForChild("Y"("上可能的无限屈服,其中X是父对象名称,Y是子对象名称
- 如果在进行调用时存在具有给定名称的子级,则此函数不会产生
- 此函数的效率低于Instance:FindFirstChild或点运算符。因此,只有当开发人员不确定对象是否已复制到客户端时,才应使用它。通常,这只是第一次访问对象
您可以通过添加timeout
作为第二个参数来删除此警告,但您需要考虑到可能找不到对象的事实:
local timeout = 2 -- seconds
local values = player:WaitForChild('Values', timeout)
if values then
local boolVal = values.Claimed
print("Claimed = ", boolVal.Value)
-- mark it as claimed
boolVal.Value = true
else
warn("Could not find 'Values' BoolValue")
end
或者,如果您知道在执行此代码时Values
将存在,您可以简单地使用点运算符或FindFirstChild()
函数访问它。但这将抛出一个";尝试索引nil";如果Values
不存在,则出现错误。
local boolVal = player:FindFirstChild('Values').Claimed
-- or
local boolVal = player.Values.Claimed
-- mark it as claimed
boolVal.Value = true
当您看到此警告时,您应该仔细检查对象名称的拼写,以及脚本执行的时间,以确保对象确实存在。