【问题标题】:RemoteEvents in ReplicatedFirst do not fire OnClientEvent handlersReplicatedFirst 中的 RemoteEvents 不会触发 OnClientEvent 处理程序
【发布时间】:2021-02-03 18:04:38
【问题描述】:

当服务器说一切准备就绪时,我试图让加载屏幕消失,但是 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

在每个“从服务器触发事件​​...”行之后,我希望看到消息“收到 ReplicatedFirst 事件信号!(时间戳)”。

你使用ReplicatedStoragedocs推荐

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

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

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    事实证明,ReplicatedFirst 在客户端/服务器复制方面有一些奇怪的规则。需要考虑的是 ReplicatedFirst 的内容是服务器所有的,当有玩家加入时,内容是复制到新玩家,而不是复制到新玩家。

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

    【讨论】:

    • 看来你的答案是正确的,我讨厌它。感谢您传递它。我必须找到一种方法来喜欢这种行为
    • 我发现我可以将我的 RemoteEvents 放入 ReplicatedStorage,并且仍然可以在我的 ReplicatedFirst 脚本中访问它们。我只需要小心我如何加载它们。我发现将分配移动到 spawn() 函数中,并在我尝试使用它时检查它是否不为空,我可以克服竞争条件。
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多