我正在尝试通过服务器端的脚本使用 RemoteEvent 将数据从一个 LocalScript 发送到另一个 LocalScript。第一个 LocalScript 在 StarterCharacterScripts 中,服务器端脚本在工作场所,第二个 LocalScript 在玩家的角色模型下。
我在每个函数中设置了打印语句,以查看通信在哪里停止,当服务器在第二个 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。我尝试四处寻找,但到目前为止还没有找到任何答案。
您只需使用BindableEvent,它就可以在[服务器端到服务器端]或[客户端到客户端]之间发送数据。 使用 :Fire 在发送数据的 localscript 上并在第二个 localscript 中输入 .Event
好吧,Bindable 事件是一种好方法,但如果您仍然想使用 Client1->Server->Client2 方法,那么这是我的方法。
服务器端脚本(工作场所)
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:FireAllClients(player,red,green,blue) -- somehow this sends all the info
end
createPartEvent.OnServerEvent:Connect(onCreatePartFired)
第二个LocalScript(玩家模型)
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Player= game.Players.LocalPlayer
local fadePartEvent=ReplicatedStorage:WaitForChild("FadePartEvent")
fadePartEvent.Name="FadePartEvent"
local function onFadePartFired(player,red,green,blue)
if Player.UserId == player.UserId then -- check if You are the one who supposed to receive the info
print("Done!")
print(player,red,green,blue)
end
end
fadePartEvent.OnClientEvent:Connect(onFadePartFired)