尝试使用“leaderstats”索引 nil
Posted
技术标签:
【中文标题】尝试使用“leaderstats”索引 nil【英文标题】:Attempt to index nil with 'leaderstats' 【发布时间】:2022-01-05 04:40:20 【问题描述】:所以基本上我想制作一款塔防游戏,我添加了一个按钮,点击后会在带有 AI 的塔/机器人中生成。 (脚本是本地的)尝试使用'leaderstats'索引 nil 总是让我出错。 (我知道这意味着游戏不知道leaderstats 是什么),我制作了一个脚本,在播放器内部创建了名为leaderstats 的文件夹,里面有硬币和其他东西,但它仍然不知道有一个leaderstats 文件夹。我也尝试了 FindFirstChild(),但它只是说尝试使用 'FindFirstChild' 索引 nil。谁能帮帮我?
local button = script.Parent
button.MouseButton1Click:Connect(function(player)
local spawner = game.Workspace.ts1
local money = player.leaderstats.Cash.Value
if money >= 250 then
money = money - 250
local clone = game.ReplicatedStorage.Allies.Guard:Clone()
clone.Parent = workspace
clone.HumanoidRootPart.CFrame = spawner.HumanoidRootPart.CFrame
else
if money <= 250 then
button.BackgroundColor3 = Color3.new(1, 0, 0)
button.Text = "Too Expensive"
wait(0.5)
button.Text = "Guard [250$]"
button.BackgroundColor3 = Color3.new(0.603922, 0.603922, 0.603922)
end
end
end)
【问题讨论】:
Attempt to index nil with 'leaderstats'. (I know that this means the game doesnt know what leaderstats is)
- 不。这意味着player
是nil
【参考方案1】:
MouseButton1 event on GuiButtons 不提供任何参数,因此您的 player
变量最终为零。当你尝试说 player.leaderstats
时,它会抛出错误,因为 player 没有任何子元素或要索引的属性,因为它是 nil。
但由于这是一个 LocalScript,您可以使用 Players.LocalPlayer 对象轻松访问 Player 对象。
local button = script.Parent
button.MouseButton1Click:Connect( function()
local player = game.Players.LocalPlayer
【讨论】:
尝试索引 nil 已修复,但我还有另一个问题:每当“守卫”出现时,他的 AI 脚本就无法工作……有什么解决办法吗?也不收你的钱 关于钱,见this answer。我不知道为什么 AI 脚本不起作用,您需要自己解决这个问题。 最后,3 个月后我决定再做一次。我现在得到了钱和塔 AI:塔 AI 坏了,因为本地脚本在 GUI 中生成了它。我使用了远程事件,现在它可以工作了。只剩下一个错误:在游戏中,您每 5 秒获得 10 现金。当您购买塔时,您会损失 250 现金,但在 5 秒后您获得 10 现金后,您会从购买塔中获得损失的现金..? 没关系,我可能已经意识到原因:因为它是本地脚本,所以请改用普通脚本 我使用了普通脚本,它工作正常,现在我终于可以开始对我的塔防游戏进行重大更新了,非常感谢以上是关于尝试使用“leaderstats”索引 nil的主要内容,如果未能解决你的问题,请参考以下文章