Roblox投票系统开发报错:尝试索引nil的'value'属性
问题解决:
attempt to index nil with 'value' 投票按钮报错 问题根源
你的脚本放在StarterGui下,属于客户端脚本,但误用了全局PlayerAdded事件获取leaderstats,这会导致两个核心问题:
- 客户端脚本运行时,当前玩家的
LocalPlayer已经存在,全局PlayerAdded不会触发当前玩家的回调,votes变量永远不会被赋值,始终为nil - 就算回调触发,玩家也可能在回调执行完成前点击按钮,此时
votes仍未赋值,照样触发报错
另外,投票逻辑应该明确操作当前本地玩家的leaderstats,而非全局玩家对象。
修正后的代码
local button = script.Parent local player = game.Players.LocalPlayer -- 等待本地玩家的leaderstats加载完成 local leaderstats = player:WaitForChild("leaderstats") local votes = leaderstats:WaitForChild("Votes") button.MouseButton1Down:Connect(function() votes.Value += 1 end)
关键改动说明
- 直接获取
game.Players.LocalPlayer:客户端脚本可直接访问当前玩家,无需等待全局PlayerAdded事件 - 提前用
WaitForChild加载对象:确保按钮绑定事件前,leaderstats和Votes已加载完成,从根源避免nil错误 - 移除多余全局监听:完全适配客户端脚本的运行逻辑
内容的提问来源于stack exchange,提问作者into
相关产品推荐
相关产品推荐

