Roblox Studio:为什么 Roblox Studio 上的 for 循环不起作用?

我在 roblox studio 上制作了一个 CameraScript。当玩家触碰机器人时,相机会聚焦于机器人。但是 for 循环似乎无法工作。

位于 game.StarterPlayer.StarterPlayerScripts 的脚本:

workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable

game.Players.LocalPlayer.CharacterAdded:Connect(function(char)
    local g = char.Name
    print(g) -- 仅用于调试目的
    print("玩家已加载!")

    tou(char)
end)

function tou(char)
    print("函数已运行")
    for _,p in pairs(char:GetChildren()) do
        print("我们在循环你的部件...")
        p.Touched:Connect(function(hit)
            print("有人碰到了吗?")
            if hit.Parent.Name == "Robot" and hit.Parent:IsA("Model") then
                print("那是机器人!")
                workspace.CurrentCamera.CFrame = hit.Parent.Look.CFrame
                workspace.CurrentCamera.Focus = hit.Parent.Head.CFrame
                print("相机锁定应该成功...")
            else
                print("那不是机器人...")
            end
        end)
    end
end

这段代码无法工作:

for _,p in pairs(char:GetChildren()) do
    print("我们在循环你的部件...")
    p.Touched:Connect(function(hit)
        print("有人碰到了吗?")
        if hit.Parent.Name == "Robot" and hit.Parent:IsA("Model") then
            print("那是机器人!")
            workspace.CurrentCamera.CFrame = hit.Parent.Look.CFrame
            workspace.CurrentCamera.Focus = hit.Parent.Head.CFrame
            print("相机锁定应该成功...")
        else
            print("那不是机器人...")
        end
    end)
end

我尝试将 for 循环直接放在 CharacterAdded 事件中,并进行调试打印,但它仅打印了以下内容:

17:55:24.242  <username>  -  Client - CamLockOnKill:5
17:55:24.243  玩家已加载!  -  Client - CamLockOnKill:6
17:55:24.243  函数已运行  -  Client - CamLockOnKill:12

...但它未打印其他内容。

原文链接 https://stackoverflow.com/questions/70876851

点赞
stackoverflow用户2858170
stackoverflow用户2858170

它不会打印“ We're here loopin ur parts...”,因此循环不会运行。

避免出现错误而不运行通用的for循环的唯一方法是为'pairs'提供一个空表。

因此,'char'没有任何子对象。弄清楚为什么你认为它有子对象,以及为什么它没有。

2022-01-27 10:44:04