我有一个传送系统,当玩家触摸某个部件时,他们会被放入电梯,倒计时开始,第一个进入电梯的玩家可以设置一些不同的选项,例如地图和难度。如果只有一部电梯,这一切都可以正常工作,但是当我复制电梯并且有人进入一部电梯时,所有电梯上的 GUI 都会更新,当玩家离开电梯时,它会循环遍历所有电梯的出口位置并将最后一名玩家。
服务器脚本和 SurfaceGui 都是我复制的电梯模型的后代。
这是更改 surfaceGui 的脚本部分(由于某种原因更新所有电梯的 Gui):
local elevator = script.Parent
local surfaceGui = elevator.Entrance.SurfaceGui
local surfaceDifficulty = surfaceGui.Difficulty
local surfaceRoomAmount = surfaceGui.RoomAmount
optionsEvent.OnServerEvent:Connect(function(player, eventtype, value)
if eventtype == "updateDifficulty" then
difficulty = value
surfaceDifficulty.Text = "Difficulty: " .. tostring(difficulty)
surfaceDifficulty.Visible = true
elseif eventtype == "updateRoomAmount" then
roomAmount = value
surfaceRoomAmount.Text = "Room Amount: " .. tostring(roomAmount)
surfaceRoomAmount.Visible = true
end
end)
这是触发该事件的本地脚本部分:
lobbyGui.mapSelectionFrame.Buttons.nextButton.Activated:Connect(function()
if map ~= nil then
lobbyGuiEvent:FireServer("isReady")
lobbyGui.UIPageLayout:Next()
local difficulty = tonumber(difficultyText.Text)
optionsEvent:FireServer("updateDifficulty", difficulty)
local roomAmount = tonumber(roomAmoutText.Text)
optionsEvent:FireServer("updateRoomAmount", roomAmount)
else
lobbyGui.mapSelectionFrame.Title.TextColor = BrickColor.new("Really red")
task.wait(1)
lobbyGui.mapSelectionFrame.Title.TextColor = BrickColor.new("White")
end
end)
这本质上保存了主人在进入电梯时按下图形用户界面上的下一个按钮时所选择的设置。
我尝试为每个电梯模型和电梯服务器脚本提供唯一的名称,但这没有任何作用,因为它们都引用 script.Parent。
我还尝试将
local elevator = script.Parent
更改为 local elevator = game.Workspace.Castle.Elevators.Elevator1
,但这似乎没有改变或修复任何内容。
您的代码使用多个
RemoteEvent
来传输数据。不要这样做。相反,每部电梯都有不同的 RemoteEvents
。这意味着每个参数都是独立的。
希望这有帮助!