You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Roblox Studio协程使用报错:期望函数却获nil的解决方案求助

解决Roblox协程报错:invalid argument #1 to 'wrap' (function expected, got nil)

你遇到的问题根源是变量名冲突:Spawn函数的第一个参数取名为mob,和外部定义的mob表重名了。在Spawn函数内部,mob指代的是你传入的怪物名称字符串,而不是包含Move方法的那个表,所以mob.Move会返回nil,传给coroutine.wrap自然就触发了参数错误。

修复方法很简单,把Spawn函数的第一个参数名换掉,比如改成mobName,同时调整函数内用到这个参数的地方:

local mob = {}
local ServerStorage = game:GetService("ServerStorage")

function mob.Move(mob, map)
    local humanoid = mob:WaitForChild("Humanoid")
    local waypoints = map.Waypoints

    for waypoint=1, #waypoints:GetChildren() do
        humanoid:MoveTo(waypoints[waypoint].Position)
        humanoid.MoveToFinished:Wait()
    end

    mob:Destroy()
end

function mob.Spawn(mobName, map, amount)
    local mobExists = ServerStorage.Mobs:FindFirstChild(mobName)
    if mobExists then
        for i=1, amount do
            task.wait(.5)
            local newMob = mobExists:Clone()
            newMob.HumanoidRootPart.CFrame = map.Start.CFrame
            newMob.Parent = map.Mobs

            coroutine.wrap(mob.Move)(newMob, map)
        end
    else
        warn("No exist ", mobName)
    end
end

return mob

这样修改后,函数内部的mob就会正确指向外部的表,mob.Move就能拿到正确的函数,协程也能正常启动了。

内容的提问来源于stack exchange,提问作者code-e-ghast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:25:54