BindableEvent 不触发 Lua

我在 ReplicatedStorage 中的一个事件文件夹中有一个 BindableEvent,被一个 part 中的脚本调用,但似乎没有触发,可能是什么问题?

代码: 发送者(来自部分):

local popEvent = game.ReplicatedStorage.Events.PopEvent

local lvl = script.Parent.Parent:GetAttribute("Level")
local pops = game.Workspace.PopParts
local lvlPop = pops:FindFirstChild("Lvl"..tostring(lvl))
local kids = lvlPop:GetChildren()

while true do
    for i, v in pairs(kids) do
        popEvent:Fire(script.Parent, v)
        print("here")
    end
    wait(3)
end

接收者(来自文件夹):

script.Parent.Event:Connect(function (pt1, pt2)
    print("there")
    if (pt1:IsA("Part") and pt2:IsA("Part")) then
        local x1 = pt1.Position.X
        local l1 = pt1.Size.X / 2
        local x2 = pt2.Position.X
        local l2 = pt2.Size.X / 2

        local z1 = pt1.Position.Z
        local d1 = pt1.Size.Z / 2
        local z2 = pt2.Position.Z
        local d2 = pt2.Size.Z / 2

        if ((x1 + l1 < x2 - l2 and x1 - l1 > x2 + l2) and (z1 + d1 < z2 - d2 and z1 - d1 > z2 + d2)) then
            pt1.Transparency = 1
            pt1.Anchored = false
        end
    else
        if not(pt1:IsA("Part")) then
            warn("pt1 不是一个 part")
        elseif not(pt2:IsA("Part")) then
            warn("pt2 不是一个 part")
        end
    end
end)

感谢帮助!

点赞
用户2860267
用户2860267

看起来你把 Receiver Script 放在了 ReplicatedStorage 中,但这不是 Script 执行的位置之一。根据文档的说明:

当满足以下条件时,Script的Lua代码将在新的线程中运行:

  • Disabled属性为false
  • Script对象是 Workspace 或 ServerScriptService 的子孙

所以你的 BindableEvent 可能已经成功触发了,但你监听这个事件的 Script 从未运行,所以它永远不会连接到该事件。尝试将 Script 移入 Workspace 或 ServerScriptService,更新事件路径。

2021-04-12 18:29:07