ReplicatedFirst 中的 RemoteEvents 不会触发 OnClientEvent 处理程序

RemoteEvents in ReplicatedFirst do not fire OnClientEvent handlers

我试图让加载屏幕在服务器说一切准备就绪时消失,但 LocalScript 中的事件侦听器没有在我期望的时候触发。

在 ReplicatedFirst 的 LocalScript 中,我有这个 :

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

在 ServerScripts 的脚本中,我有这个:

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

在每 "Firing event from server ..." 行之后,我本以为会看到消息 "ReplicatedFirst event signal received! (timestamp)"。

docs recommend that you use ReplicatedStorage :

In order for both the server and clients to utilize a remote event, the RemoteEvent object itself must be in a place where both sides can see it. As such, we recommend that you store the RemoteEvent inside of ReplicatedStorage, although in some cases it’s appropriate to store it in the workspace or inside a Tool.

但我的假设是 ReplicatedFirst 是这些共享位置之一。不是这样吗? ReplicatedFirst 不是共享位置吗?还是我做错了什么?

事实证明,ReplicatedFirst 关于 client/server 复制有一些奇怪的规则。应该考虑到ReplicatedFirst的内容是服务器所有的,当有玩家加入时,内容是复制,而不是复制,给新的玩家。

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