ReplicatedFirst中的RemoteEvents未触发OnClientEvent处理程序

我正在尝试在服务器表示一切准备就绪时让加载屏幕消失,但是LocalScript中的事件监听器在我期望它触发时并未触发。

在ReplicatedFirst中的LocalScript中,我有以下代码:

print("Hello world - Local Script!", tick())
game.ReplicatedFirst.RemoteEvent.OnClientEvent:Connect(function()
    print("ReplicatedFirst event signal received!", tick())
end)

在ServerScripts中的Script中,我有以下代码:

print("Hello world! - Server", tick())
while true do
    print("Firing event from server...", tick())
    game.ReplicatedFirst.RemoteEvent:FireAllClients()
    wait(3.0)
end

输出如下:

  Hello world! - Server 1585699530.2938
  Firing event from server... 1585699530.2945
  Hello world - Local Script! 1585699531.4771
  Firing event from server... 1585699533.3019
  Firing event from server... 1585699536.3193
  Firing event from server... 1585699539.3349
  Firing event from server... 1585699542.3354

在每个“服务器触发事件…”行后,我期望看到“ReplicatedFirst event signal received!(时间戳)”消息。

文档 _建议_您使用ReplicatedStorage

为了使服务器和客户端都能利用远程事件,远程事件对象本身必须位于双方都可以看到的位置上。因此,我们建议您将远程事件存储在ReplicatedStorage中,尽管在某些情况下,将其存储在工作区或工具中也是合适的。

但是,我的假设是ReplicatedFirst是这些共享位置之一。这不是事实吗?ReplicatedFirst不是共享位置吗?或者我做错了什么?

点赞
用户2860267
用户2860267

原来,ReplicatedFirst 在客户端/服务器复制方面有一些奇怪的规则。应该考虑到 ReplicatedFirst 的内容归服务器所有,当玩家加入时,这些内容是被复制而不是复制到新玩家的。

但是,由于每个玩家都有自己的内容副本,尝试连接到托管在 ReplicatedFirst 中的 RemoteEvents 不会抛出任何错误,但也不会成功。

2020-04-04 22:05:31