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

Roblox Lua中如何等待模型加载?遇PrimaryPart空引用报错

解决Roblox Lua中模型PrimaryPart为nil的报错问题

你遇到的报错Players.Alex.PlayerGui.AllSeeingEye:120: attempt to index nil with 'Position',根源是EyeModel.PrimaryPart为nil——虽然你用WaitForChild等待了EyeBox和EyeBoxModel加载,但模型加载完成不代表它的PrimaryPart已经被正确设置(可能编辑器里没配置,或是运行时动态赋值的时机晚于你的代码执行)。

下面是几种靠谱的解决方法:

  • 方案1:直接等待PrimaryPart加载并手动绑定
    如果PrimaryPart是模型的固定子部件,直接用WaitForChild等待它,再手动设置为模型的PrimaryPart(避免编辑器未配置的情况):

    local EyeModel = workspace:WaitForChild("EyeBox"):WaitForChild("EyeBoxModel")
    -- 替换成你模型中PrimaryPart的实际名称
    local targetPart = EyeModel:WaitForChild("EyeRoot")
    EyeModel.PrimaryPart = targetPart
    local EyePosition = targetPart.Position
    
  • 方案2:监听PrimaryPartChanged事件
    如果PrimaryPart是运行时动态赋值的,用模型的PrimaryPartChanged事件触发逻辑,确保拿到有效部件后再执行:

    local EyeModel = workspace:WaitForChild("EyeBox"):WaitForChild("EyeBoxModel")
    
    -- 先检查是否已存在PrimaryPart
    if EyeModel.PrimaryPart then
        local EyePosition = EyeModel.PrimaryPart.Position
        -- 在这里写你的业务逻辑
    else
        -- 等待PrimaryPart被设置后执行逻辑
        EyeModel.PrimaryPartChanged:Connect(function(newPrimaryPart)
            local EyePosition = newPrimaryPart.Position
            -- 在这里写你的业务逻辑
        end)
    end
    
  • 前置检查:编辑器内确认PrimaryPart配置
    打开Roblox Studio,选中EyeBoxModel,在右侧属性面板找到PrimaryPart选项,确保已经选择了模型内的一个部件作为PrimaryPart。如果未配置,运行时模型的PrimaryPart默认是nil,必然会触发报错。

内容的提问来源于stack exchange,提问作者Alexey Tseitlin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 09:09:51