如何修复 Roblox 无限收益错误?
Posted
技术标签:
【中文标题】如何修复 Roblox 无限收益错误?【英文标题】:How do I fix Roblox Infinite Yield Error? 【发布时间】:2020-03-08 21:05:59 【问题描述】:<---This is my current local script--->
local replicatedStorage = game:GetService("ReplicatedStorage")
local starterRebirthAmount = 5000
local player = game.Players.LocalPlayer
local mainFrame = script.Parent:WaitForChild("MainFrame")
local rebirthMenu = mainFrame:WaitForChild("RebirthMenu")
local mainButton = script.Parent:WaitForChild("MainButton")
local rebirthButton = rebirthMenu:WaitForChild("RebirthButton")
local strengthToRebirth = rebirthMenu:WaitForChild("StrengthToRebirth")
local rebirths = player:WaitForChild("leaderstats").Rebirths <--The Bit I think is causing the
problems.
strengthToRebirth.Text = "You need at least "..math.floor((starterRebirthAmount + (rebirths.Value) *
math.sqrt(500000))).." strength to rebirth"
mainButton.MouseButton1Click:Connect(function()
mainFrame.Visible = not mainFrame.Visible
end)
rebirthButton.MouseButton1Click:Connect(function()
local result = replicatedStorage.Remotes.Rebirth:InvokeServer()
if result == true then
rebirthButton.Text = "Successfully Rebirthed"
wait(1)
rebirthButton.Text = "CLICK HERE TO REBIRTH"
elseif result == "NotEnoughStrength" then
rebirthButton.Text = "Not Strong Enough!"
wait(1)
rebirthButton.Text = "CLICK HERE TO REBIRTH"
end
end)
rebirths:GetPropertyChangedSignal("Value"):Connect(function()
strengthToRebirth.Text = "You need at least "..math.floor((starterRebirthAmount + (rebirths.Value) *
math.sqrt(5000000))).." strength to rebirth" end)
我每次都遇到同样的错误。 21:10:20.963 -
无限产量可能在 'Players.Archerofcool:WaitForChild("leaderstats")'
【问题讨论】:
我忘了说这让我的整个游戏都变砖了。 另外说明,lua cmets 是--
而不是 <---
【参考方案1】:
WaitForChild() 如果您必须等待事物加载到世界中,例如玩家及其外观,则该方法非常有用。但正如 Piglet 指出的那样,不提供超时会导致它抛出像你看到的那样的错误。
当您提供超时时,该函数将返回 nil,您需要能够对这种情况做出反应。
如果您确定在脚本执行时所有内容都已加载,您可以像获取普通索引一样简单地抓取所有内容。
-- wait for the stuff to load...
while script.Parent:WaitForChild("MainFrame", 1) == nil do
wait(1)
end
-- grab all the elements
local mainButton = script.Parent.MainButton
local mainFrame = script.Parent.MainFrame
local rebirthMenu = mainFrame.RebirthMenu
local rebirthButton = rebirthMenu.RebirthButton
local strengthToRebirth = rebirthMenu.StrengthToRebirth
-- wait for the player to load in
local player = game.Players.LocalPlayer
while player:WaitForChild("leaderstats", 1) == nil do
wait(1)
end
local rebirths = player.leaderstats.Rebirths
【讨论】:
【参考方案2】:使用任何功能前请阅读文档!
来自https://developer.roblox.com/en-us/api-reference/function/Instance/WaitForChild
等待孩子
如果对该函数的调用超过 5 秒没有返回,并且没有返回 已指定 timeOut 参数,将向 线程可能无限期产生的输出;这个警告需要 在 'X:WaitForChild("Y")' 上形成无限收益,其中 X 是 父对象名,Y 是子对象名。
【讨论】:
以上是关于如何修复 Roblox 无限收益错误?的主要内容,如果未能解决你的问题,请参考以下文章
Roblox Lua 错误值不是 Player 的有效成员,但我不尝试访问它
索引超出范围错误? Roblox 使用 Cookie 自动登录