(Roblox Studio)客户端-服务器-客户端通信不起作用

Posted

技术标签:

【中文标题】(Roblox Studio)客户端-服务器-客户端通信不起作用【英文标题】:(Roblox Studio) Client-Server-Client communication not working 【发布时间】:2019-12-29 07:57:33 【问题描述】:

我正在尝试通过服务器端的脚本使用 RemoteEvent 将数据从一个 LocalScript 发送到另一个。第一个 LocalScript 在 StarterCharacterScripts 中,服务器端脚本在工作场所,第二个 LocalScript 在玩家角色模型下。

我已经在每个函数中设置了打印语句,以查看通信在哪里停止,并且当服务器在第二个 LocalScript 处触发该函数时,它似乎正在停止。但是,我无法确定造成这种情况的原因。

第一个本地脚本(StarterCharacterScripts)

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local createPartEvent = ReplicatedStorage:WaitForChild("CreatePartEvent")
local UserInputService=game:GetService("UserInputService")
local player=game.Players.LocalPlayer
UserInputService.InputBegan:Connect(function(input,gameProcessed)
    if input.KeyCode==Enum.KeyCode.G then
        createPartEvent:FireServer(251,226,11)
        print("Bing!")
    end
end)

服务器端脚本(工作场所)

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local createPartEvent = Instance.new("RemoteEvent", ReplicatedStorage)
createPartEvent.Name = "CreatePartEvent"
local fadePartEvent = Instance.new("RemoteEvent")
fadePartEvent.Parent=game.ReplicatedStorage
fadePartEvent.Name="FadePartEvent"

local function onCreatePartFired(player,red,green,blue)
    print("Ting!" ,player,red,green,blue)
    fadePartEvent:FireClient(player,red,green,blue)
end

createPartEvent.OnServerEvent:Connect(onCreatePartFired)

第二个LocalScript(玩家模型)

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player=game.LocalPlayer
local fadePartEvent=ReplicatedStorage:WaitForChild("FadePartEvent")
fadePartEvent.Name="FadePartEvent"
local function onFadePartFired(player,red,green,blue)
    print("Done!")
        print(player,red,green,blue)
end

fadePartEvent.OnClientEvent:Connect(onFadePartFired)

如果代码运行正常,输出应该是:

Bing!
Ting! BusterTornado 251 226 11
Done! BusterTornado 251 226 11

但是,输出显示为:

Bing! 
Ting! BusterTornado 251 226 11

这表明该函数没有到达第二个 LocalScript。我已经尝试四处搜索,但目前还没有找到任何答案。

【问题讨论】:

玩家的启动脚本触发和角色加载之间可能存在竞争条件。一个健全性检查可能是在第二个本地脚本的最后添加一个打印语句,只是为了验证 ReplicatedStorage 中的事件是否正确定位,并且回调实际上是在服务器触发其信号之前注册的。 【参考方案1】:

您只需使用 BindableEvent,即可在 [Server-side to Server-side] 或 [Client-side to Client-side] 之间发送数据。 使用:在发送数据的本地脚本和第二个本地脚本类型中触发。事件

【讨论】:

以上是关于(Roblox Studio)客户端-服务器-客户端通信不起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Roblox Studio 中移动网格

Roblox Studio 未加载

循环中的 Roblox Studio Lua if 语句

Roblox Studio 跳过循环

Roblox Studio 价值问题

Roblox Studio 打印错误值