使用 UIButton 进行游戏传送 - 如何操作? (Lua)

我目前正在制作我的游戏的主菜单, 其中一个按钮(一个 "Deploy" 按钮) 需要将玩家传送到一个地图。但是,我无法让 "Deploy" 按钮起作用。

local button = script.parent
local gameteleport = script:GetCustomProperty("Game")
local Deploy = script:GetCustomProperty("Deploy"):WaitForObject()

Deploy.isEnabled = true   --启用UI
UI.SetCursorVisible(true)
UI.CanCursorInteractWithUI(true)

function OnClicked(whichButton)
    print("按钮被点击了: " .. whichButton.name)
    player:TransferToGame("703a40/map-the-cauldron")
end

function OnHovered(whichButton)
    --print("按钮被悬停了: " .. whichButton.name)
end

function OnUnhovered(whichButton)
    --print("按钮停止悬停了: " .. whichButton.name)
end

button.clickedEvent:Connect(OnClicked)
button.hoveredEvent:Connect(OnHovered)
button.unhoveredEvent:Connect(OnUnhovered)
点赞
用户9900937
用户9900937

你遇到的唯一问题是从哪个网络上下文调用“ _TransferToGame_”函数。 “ _TransferToGame_”函数需要从服务器端脚本中调用,而不是客户端脚本。你可以通过使用从客户端广播到服务器的事件来通知服务器要传输哪个玩家来实现这一点。

客户端脚本:

local button = script.parent
local gameteleport = script:GetCustomProperty("Game")
local Deploy = script:GetCustomProperty("Deploy"):WaitForObject()

Deploy.isEnabled = true   --启用UI
UI.SetCursorVisible(true)
UI.CanCursorInteractWithUI(true)

function OnClicked(whichButton)
    print("button clicked: " .. whichButton.name)
    --告诉服务器传输玩家
    Events.BroadcastToServer("Transfer Player")
end

function OnHovered(whichButton)
    --print("button hovered: " .. whichButton.name)
end

function OnUnhovered(whichButton)
    --print("button unhovered: " .. whichButton.name)
end

button.clickedEvent:Connect(OnClicked)
button.hoveredEvent:Connect(OnHovered)
button.unhoveredEvent:Connect(OnUnhovered)

服务器端脚本:

--当接收到“Transfer Player”消息时调用此函数
function OnTransfer(player)
    --传输玩家
    player:TransferToGame("703a40/map-the-cauldron")
end
--将“OnTransfer”函数连接到“Transfer Player”事件
Events.ConnectForPlayer("Transfer Player", OnTransfer)
2021-04-06 16:25:59