创建自定义传送屏幕

Time:5 分钟

当玩家在实例之间进行传送时,Roblox 会提供一条消息。如果需要,可以禁用此 GUI 以便使用自定义屏幕。添加自己的自定义 GUI 可以使游戏中各个场景之间的过渡看起来不那么明显,从而为玩家提供更流畅的体验。

如何禁用默认 GUI

禁用默认消息非常简单。在 ScriptLocalScript 中将 TeleportService/CustomizedTeleportUI|CustomizedTeleportUI 设置为 true 即可:

game:GetService("TeleportService").CustomizedTeleportUI = true

显示自定义 GUI

在传送玩家时显示 GUI 也非常简单。只需将想要的 GUI 移动到玩家的 PlayerGui 中,或者事先将那里的 GUI 隐藏,然后使用 GuiObject/Visible 将其显示出来即可。你可以随意加入任何你想要的效果。例如,单击传送按钮时,此代码将在纯黑屏幕中淡入:

button.MouseButton1Click:connect(function()
	-- 触发 RemoteEvent
	game:GetService("TeleportService"):Teleport(otherPlaceId)
	
	-- 将读取页面可视化
	loadingScreen.Visible = true
	
	-- 淡入屏幕
	for i = 1, 0, -.05 do
		loadingScreen.BackgroundTransparency = i
		wait()
	end
	loadingScreen.BackgroundTransparency = 0
end)

传送后显示自定义 GUI

你可以通过将 LocalScripts 和 GUI 元素放在 ReplicatedFirst 中来创建自定义加载屏幕,如 Articles/自定义加载屏幕 中所示。但是,当游戏通过传送加载时,会出现一个小窗口,其中会显示默认的 Roblox 加载屏幕。为了填补这一空白,TeleportService 中的所有传送功能都允许使用 ScreenGui 作为可选参数,该参数将在传送后立即显示。

local loadingScreen = Instance.new(**ScreenGui**, player.PlayerGui)
local loadingScreenFrame = Instance.new(**Frame**, loadingScreen)
loadingScreenFrame.Name = **loadingScreenFrame**
loadingScreenFrame.BackgroundColor3 = Color3.new(0,0,0)
loadingScreenFrame.Size = UDim2.new(1,0,1,50)
loadingScreenFrame.Position = UDim2.new(0,0,0,-50)
loadingScreenFrame.Visible = false

TeleportService:Teleport(otherPlaceId, player, nil, loadingScreen)

上面的代码将创建一个黑屏,然后将其与传送调用一起传递。当新游戏加载时,将自动为该玩家显示黑屏。

简单示例

尽管没有有关如何管理你的传送的指导原则,但建议采取以下几个措施。如果要显示全屏图像,则可能需要隐藏核心 GUI。根据你的游戏,你可能还想使用诸如 ForceField 之类的方法来保护玩家免受伤害。最后,无论你是否使用自定义 GUI 进行传送,请做好准备处理无法传送的情况!这种情况不会经常发生,但是一定要小心。

Roblox官方链接:创建自定义传送屏幕