(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)客户端-服务器-客户端通信不起作用的主要内容,如果未能解决你的问题,请参考以下文章