我目前正在为 ROBLOX 制作一款游戏作为一个热情项目,但我遇到了一个问题。
我正在制作一个脚本,以便当玩家奔跑时,相机的FOV会突然上升,就像你跑得很快一样。
我已经成功编写了代码,但是当在工作室或客户端中运行时,它会冻结游戏并在输出中放置“脚本超时:耗尽允许的执行时间”。
有什么办法可以解决这个问题吗?非常感谢!
代码在这里:
local TweenService = game:GetService("TweenService")
local player = game.Players.LocalPlayer
local Humanoid = script.Parent:WaitForChild("Humanoid")
local Camera = workspace.CurrentCamera
local FovRun = TweenService:Create(workspace.CurrentCamera, TweenInfo.new(0.5), {FieldOfView = 75})
local FovWalk = TweenService:Create(workspace.CurrentCamera, TweenInfo.new(0.5), {FieldOfView = 70})
local Running = false
UserInputService.InputBegan:Connect(function(Key, IsTyping)
if Key.KeyCode == Enum.KeyCode.LeftShift and not IsTyping then
if (Humanoid.MoveDirection:Dot(Humanoid.Parent:WaitForChild("HumanoidRootPart").CFrame.LookVector) > 0) then
if Running then
FovWalk:Play()
Running = false
Humanoid.WalkSpeed = Humanoid.WalkSpeed - 8
end
Running = true
Humanoid.WalkSpeed = Humanoid.WalkSpeed + 8
FovRun:Play()
elseif Humanoid.Health > Humanoid.MaxHealth / 1.5 then
repeat
until not Running
if Humanoid.Health < Humanoid.MaxHealth / 1.5 then
repeat
until not Running
end
else
if Running then
FovWalk:Play()
Running = false
Humanoid.WalkSpeed = Humanoid.WalkSpeed - 8
end
end
end
end)
repeat
until not Running
这是一个无限循环。如果您输入它并且
Running
是 true
,您的代码将永远运行它,因为 Running
不会在循环体中更新。
Roblox 会意识到您的代码被卡住并抛出该错误消息。
听起来您的脚本可能陷入无限循环或每帧执行太多操作,从而导致“脚本超时”错误。尝试使用 RunService.RenderStepped 或 RunService.Heartbeat 来优化代码,以实现更流畅的执行,而不是使用像 while true do 这样的循环。
顺便说一句,如果您正在探索先进的工具来增强您的 ROBLOX 体验,我一直在使用 Fluxus Executor,并且它运行完美。它非常适合自定义项目,并且可能为有效调试和测试游戏提供一些灵感。
通过对脚本逻辑进行一些调整,您应该能够解决该问题。祝你的激情项目好运!