TeleportService

显示已弃用

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

无法创建
服务

TeleportService 负责在不同地点和服务器之间传送 Players

有关如何在服务器之间传送玩家的更多信息,请参见 在地点之间传送

概要

方法

活动

属性

方法

GetArrivingTeleportGui

此函数返回 LocalPlayer 进入此地点时的 customLoadingScreen

请注意,如果目标地点在不同的游戏中,将不会使用 customLoadingScreen

加载屏幕

在传送期间,在目标地点加载时, customLoadingScreen 被挂载到 CoreGui。一旦地点加载完成, loading screenparentednil

如果您希望保留 customLoadingScreen 并执行自己的过渡,您需要将其挂载到本地玩家的 PlayerGui。有关此操作的示例,请参见下面的代码示例。

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。


返回

LocalPlayer 进入此地点时的 customLoadingScreen

代码示例

以下代码放置在 ReplicatedFirst 中的 LocalScript 内 将在自定义传送加载屏幕上保留五秒,然后销毁它。

处理传送加载GUI

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
local customLoadingScreen = TeleportService:GetArrivingTeleportGui()
if customLoadingScreen then
local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
ReplicatedFirst:RemoveDefaultLoadingScreen()
customLoadingScreen.Parent = playerGui
task.wait(5)
customLoadingScreen:Destroy()
end

GetLocalPlayerTeleportData

Variant

此函数返回 Players.LocalPlayer 到达时的传送数据。它只能从客户端调用。

骗子可以伪造传送数据。通过 DataStoreService 这样的服务传送安全数据以防止篡改。


返回

Variant

Players.LocalPlayer 进入此地点时的传送数据。

代码示例

当放入 StarterPlayerScripts 时,这个示例在玩家加入 游戏时运行,并打印玩家之前 服务器提供的任何传送数据。

获取 LocalPlayer 传送数据

local TeleportService = game:GetService("TeleportService")
local teleportData = TeleportService:GetLocalPlayerTeleportData()
print("本地玩家使用以下数据到达:", teleportData)

GetPlayerPlaceInstanceAsync

暂停

此函数返回所给 UserId 用户所在服务器的 PlaceIdJobId,前提是它在与当前地点相同的游戏中。

然后,可以使用此信息调用 TeleportService:TeleportToPlaceInstance() 让用户加入目标用户的服务器。

成功查找后,函数将返回以下值:

#名称类型描述
1 currentInstancebool布尔值,指示用户是否在当前实例中找到
2errorstring查找失败时的错误消息
3placeIdint64用户所在服务器的 PlaceId
4instanceIdstring用户所在服务器的 JobId

如果在查找过程中出现问题,例如用户离线,将抛出错误。建议您将调用此函数的代码包裹在 pcall 中。

限制

使用此函数时,您应注意以下限制:

  • 此函数只能由服务器调用。
  • 如果用户正在传送,此函数可能无法返回正确的信息。
  • 此函数可能抛出错误,因此开发者应该将其包裹在 pcall()(见下面的示例)中。
  • 由于此函数返回服务器的 JobId,而非 TeleportService:ReserveServer() 返回的访问代码,因此返回的 ID 不适合用于预留服务器。

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

参数

userId: number

所给 PlayerPlayer.UserId


返回

请参见上表。

代码示例

以下代码示例,当放置在 ServerScriptService 内的 Script 中时,将传送一个正在跟随其他玩家的玩家到相关的地点/服务器。请注意,如果被跟随的玩家在一个保留的服务器中,这将无法工作。

跟随其他玩家

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
-- 这个玩家在跟随任何人吗?
local followId = player.FollowUserId
-- 如果是,找出他们在哪里
if followId and followId ~= 0 then
local _currentInstance, placeId, jobId
local success, errorMessage, _currentInstance, placeId, jobId = pcall(function()
-- followId 是您想要获取地点和工作 ID 的玩家的用户 ID
return TeleportService:GetPlayerPlaceInstanceAsync(followId)
end)
if success then
-- 传送玩家
TeleportService:TeleportToPlaceInstance(placeId, jobId, player)
else
warn(errorMessage)
end
else
warn("玩家 " .. player.UserId .. " 并没有在跟随其他玩家!")
end
end)

GetTeleportSetting

Variant

此函数使用给定键检索保存的传送设置,这些设置是使用 TeleportService:SetTeleportSetting() 保存的。

此方法仅供客户端使用,不应在服务器上使用。

在同一游戏中的传送过程中,传送设置会被保留。这意味着可以在一个地方使用 TeleportService:SetTeleportSetting() 保存数据,然后在用户被传送到的另一个地方使用 GetTeleportSetting 检索。

例如,在允许蹲下的游戏中,您可以在传送之前保存用户当前是否蹲下作为传送设置。然后可以在目标地点在传送后检索:


local TeleportService = game:GetService("TeleportService")
local isCrouching = TeleportService:GetTeleportSetting("isCrouching")

如果在给定键下没有传送设置,则此函数将返回 nil

与 GlobalDataStores 的区别

虽然它们有一些相似之处,但传送设置和数据存储之间有一些关键区别:

  • GlobalDataStore:SetAsync() 将数据存储在 Roblox 服务器上,而 SetTeleportSetting 将数据存储在本地。
  • 存储在 GlobalDataStore 中的数据在用户离开游戏宇宙后被保留,而传送设置则不保留。
  • GlobalDataStores 只能在服务器上访问,而传送设置只能在客户端访问。
  • GlobalDataStores 有使用限制,而传送设置则没有。

一般而言,传送设置应用于在游戏中跨不同地点保留客户端信息。GlobalDataStores 应用于保存需要跨玩家会话访问的重要玩家数据。

传送设置和安全性

由于传送设置存储在本地,因此恶意用户可能会对其进行篡改。通过实施服务器端验证可以降低这种风险。

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

参数

setting: string

使用 TeleportService:SetTeleportSetting() 存储值的键。


返回

Variant

存储在给定键下的值。

ReserveServer

暂停

此函数返回一个可用于将玩家传送到预留服务器的访问代码,以及该服务器的 DataModel.PrivateServerId。它只能在服务器上调用。

预留服务器

您可以通过以下方式访问预留服务器:

您可以使用以下代码检查当前服务器是否为预留服务器:


local isReserved = game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0

DataModel.PrivateServerId 在与该服务器访问代码关联的所有服务器实例中是恒定的, DataModel.JobId 不是。

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

跨平台游戏

禁用跨游戏功能的 Xbox 和 PlayStation 上的玩家将进入与启用跨游戏平台的玩家不同的服务器。这可能导致与相同 PrivateServerId 的多个游戏服务器存在。您可以使用 DataModel.MatchmakingType 来区分这些游戏服务器。

参数

placeId: number

为其创建预留服务器的地点的 DataModel.PlaceId


返回

TeleportService:TeleportToPrivateServer() 和预留服务器的 DataModel.PrivateServerId 所需的服务器访问代码。

代码示例

以下代码将把当前游戏中的所有人发送到一个保留服务器。 由于保留服务器只能通过使用 TeleportService:TeleportToPrivateServer()来加入,因此之后将没有人会加入该 保留服务器。

请注意,因为每个人都会被传送,所以当前服务器将 (可能)关闭,因为不会有人留下来。

传送服务:传送到保留服务器

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local code = TeleportService:ReserveServer(game.PlaceId)
local players = Players:GetPlayers()
TeleportService:TeleportToPrivateServer(game.PlaceId, code, players)
-- 你可以向这个函数添加额外的参数:spawnName, teleportData 和 customLoadingScreen

以下代码将保留一个服务器,如果它之前没有被保留的话。 每当有人说“reserved”时,他们将被传送到私有 服务器。

传送服务:通过聊天传送到保留服务器

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetGlobalDataStore()
-- 获取保存的代码
local code = dataStore:GetAsync("ReservedServer")
if typeof(code) ~= "string" then -- 没有保存,创建一个
code = TeleportService:ReserveServer(game.PlaceId)
dataStore:SetAsync("ReservedServer", code)
end
local function joined(player)
player.Chatted:Connect(function(message)
if message == "reserved" then
TeleportService:TeleportToPrivateServer(game.PlaceId, code, { player })
end
end)
end
Players.PlayerAdded:Connect(joined)

SetTeleportGui

()

此函数设置将在用户传送期间显示给本地用户的自定义 teleport GUI,在传送被调用之前。

请注意,如果目的地在不同的游戏中,teleport GUI 将不会使用。它也不会在多次传送中持续存在,每次传送前都需要设置。

此函数应仅在客户端使用。如果传送函数从服务器调用(就像 TeleportService:TeleportAsync() 的情况),则应在此之前在客户端调用此函数。其中一种方法是监听在传送前几秒触发的 RemoteEvent

加载屏幕

在传送期间,在目标地点加载时, customLoadingScreen 被挂载到 CoreGui。一旦地点加载完成, loading screenparentednil

可以通过 TeleportService:GetArrivingTeleportGui() 在目标地点获取该 ScreenGui,使您可以将其挂载到 PlayerGui 并执行自己的过渡。

建议您还在初始地点的过程中将 ScreenGui parentPlayerGui

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

参数

在传送期间将要显示的加载 ScreenGui


返回

()

代码示例

这个代码片段演示了如何使用 TeleportService 来传送 LocalPlayer() 从客户端。

它还展示了如何使用 TeleportService:SetTeleportGui() 定义一个自定义加载 GUI。请注意,这个 ScreenGui 需要在目标地点使用 TeleportService:GetArrivingTeleportGui() 来获取并设置为 PlayerGui 的父级。

传送本地玩家

local TeleportService = game:GetService("TeleportService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
local PLACE_ID = 0 -- 在此处替换
local loadingGui = ReplicatedStorage:FindFirstChild("LoadingGui")
-- 将加载 GUI 设置为此地点的父级
loadingGui.Parent = playerGui
-- 设置目标地点的加载 GUI
TeleportService:SetTeleportGui(loadingGui)
TeleportService:Teleport(PLACE_ID)

SetTeleportSetting

()

此函数在同一游戏中跨所有传送保留一个值。

此方法仅供客户端使用,不应在服务器上使用。

存储的值可以在后续传送到的地方使用 TeleportService:GetTeleportSetting() 进行检索,前提是它们在同一游戏中。

例如,在允许蹲下的游戏中,您可以在传送之前保存用户当前是否蹲下作为传送设置:


local TeleportService = game:GetService("TeleportService")
local isCrouching = false
TeleportService:SetTeleportSetting("isCrouching", isCrouching)

存储的值可以采用以下形式之一:

  • 只有字符串或整数的表
  • 字符串
  • 数字
  • 布尔值

如果在给定键下已经存储了数据,前一个值将被新值覆盖。

与 GlobalDataStores 的区别

虽然它们有一些相似之处,但传送设置和数据存储之间有一些关键区别:

  • GlobalDataStore:SetAsync() 将数据存储在 Roblox 服务器上,而 SetTeleportSetting 将数据存储在本地。
  • 存储在 GlobalDataStore 中的数据在用户离开游戏宇宙后被保留,而传送设置则不保留。
  • GlobalDataStores 只能在服务器上访问,而传送设置只能在客户端访问。
  • GlobalDataStores 有使用限制,而传送设置则没有。

一般而言,传送设置应用于在游戏中跨不同地点保留客户端信息。GlobalDataStores 应用于保存需要跨玩家会话访问的重要玩家数据。

传送设置和安全性

由于传送设置存储在本地,因此恶意用户可能会对其进行篡改。通过实施服务器端验证可以降低这种风险。

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

参数

setting: string

此键用于存储值。其中可以使用 TeleportService:GetTeleportSetting() 检索对应的值。

value: Variant

要存储的值。


返回

()

Teleport

()

此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。

参数

placeId: number

要传送到的地点的 ID。

player: Instance

要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer

默认值:"nil"
teleportData: Variant

传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。

customLoadingScreen: Instance

在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。

默认值:"nil"

返回

()

代码示例

这个代码片段演示了如何使用 TeleportService 来传送 LocalPlayer() 从客户端。

它还展示了如何使用 TeleportService:SetTeleportGui() 定义一个自定义加载 GUI。请注意,这个 ScreenGui 需要在目标地点使用 TeleportService:GetArrivingTeleportGui() 来获取并设置为 PlayerGui 的父级。

传送本地玩家

local TeleportService = game:GetService("TeleportService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")
local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
local PLACE_ID = 0 -- 在此处替换
local loadingGui = ReplicatedStorage:FindFirstChild("LoadingGui")
-- 将加载 GUI 设置为此地点的父级
loadingGui.Parent = playerGui
-- 设置目标地点的加载 GUI
TeleportService:SetTeleportGui(loadingGui)
TeleportService:Teleport(PLACE_ID)

这个代码片段演示了如何使用 TeleportServicePlayer 从服务器传送。

从服务器传送

local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local PLACE_ID = 0 -- 在这里替换
local USER_ID = 1 -- 用玩家的 UserId 替换
local player = Players:GetPlayerByUserId(USER_ID)
TeleportService:Teleport(PLACE_ID, player)

TeleportAsync

暂停

此函数作为将玩家或一组玩家从一个服务器传送到另一个服务器的全能方法。可以用于:

  • 将玩家传送到不同的地点。
  • 将玩家传送到特定的服务器。
  • 将玩家传送到预留服务器。

组传送限制

潜在错误

这是导致传送失败的潜在原因列表,从无效传送到网络问题。

错误描述
无效的 placeId提供的地点 ID 小于 0。
玩家为空提供的传送玩家列表为空。
玩家实例列表不正确提供的任何玩家都不是 Player 对象。
TeleportOptions 类型不正确提供的 teleportOption 不是 TeleportOptions 对象。
从客户端调用 TeleportAsync客户端调用了 TeleportAsync,该函数只能从服务器调用。
不兼容的参数使用了相互冲突的传送选项,TeleportService 无法确定将玩家发送到哪里。

冲突的 TeleportOption 参数:
* ReservedServerAccessCode 和 ServerInstanceId
* ShouldReserveServer 和 ServerInstanceId
* ShouldReserveServer 和 ReservedServerAccessCode

有关如何在服务器之间传送玩家以及如何接收传送的用户数据的更多信息,请参见 在地点之间传送

参数

placeId: number

玩家应传送到的地点 ID。

players: Instances

要传送的玩家数组。

teleportOptions: Instance

可选的 TeleportOptions 对象,包含传递给 TeleportService:TeleportAsync() 调用的附加参数。如果未传递,则不会返回任何结果。

默认值:"nil"

返回

如果传递了 TeleportOptions 参数,则这是一个 TeleportAsyncResult 对象,提供有关最终传送目的地的信息。

TeleportPartyAsync

暂停

此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。

参数

placeId: number

要传送到的地点 ID。

players: Instances

要传送的 Players 数组。

teleportData: Variant

传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。

customLoadingScreen: Instance

在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。

默认值:"nil"

返回

被传送到的 Players 的服务器实例的 DataModel.JobId

代码示例

这个代码示例演示了如何 TeleportService:TeleportPartyAsync() 可以用于传送一组 Player|Players

在这种情况下,所有 Player|Players 将作为一个团队传送到指定的 placeId。然后打印目的地服务器的 DataModel.JobId

传送服务器中的所有玩家

local Players = game:GetService("Players")
local TeleportService = game:GetService("TeleportService")
local PLACE_ID = 0 -- 替换
local playerList = Players:GetPlayers()
local success, result = pcall(function()
return TeleportService:TeleportPartyAsync(PLACE_ID, playerList)
end)
if success then
local jobId = result
print("玩家已传送到", jobId)
else
warn(result)
end

TeleportToPlaceInstance

()

此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。

参数

placeId: number

要传送到的地点 ID。

instanceId: string

要传送到的服务器实例的 DataModel.JobId

player: Instance

要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer

默认值:"nil"
spawnName: string

要生成的 SpawnLocation 的可选名称。

teleportData: Variant

传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。

customLoadingScreen: Instance

在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。

默认值:"nil"

返回

()

代码示例

以下代码示例,当放置在 ServerScriptService 内的 Script 中时,将传送一个正在跟随其他玩家的玩家到相关的地点/服务器。请注意,如果被跟随的玩家在一个保留的服务器中,这将无法工作。

跟随其他玩家

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
-- 这个玩家在跟随任何人吗?
local followId = player.FollowUserId
-- 如果是,找出他们在哪里
if followId and followId ~= 0 then
local _currentInstance, placeId, jobId
local success, errorMessage, _currentInstance, placeId, jobId = pcall(function()
-- followId 是您想要获取地点和工作 ID 的玩家的用户 ID
return TeleportService:GetPlayerPlaceInstanceAsync(followId)
end)
if success then
-- 传送玩家
TeleportService:TeleportToPlaceInstance(placeId, jobId, player)
else
warn(errorMessage)
end
else
warn("玩家 " .. player.UserId .. " 并没有在跟随其他玩家!")
end
end)

TeleportToPrivateServer

()

此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。

参数

placeId: number

要传送到的地点 ID。

reservedServerAccessCode: string

使用 TeleportService:ReserveServer() 返回的预留服务器访问代码。

players: Instances

要传送的 Players 数组。

spawnName: string

要生成的 SpawnLocation 的可选名称。

teleportData: Variant

传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。

customLoadingScreen: Instance

在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。

默认值:"nil"

返回

()

代码示例

以下代码将保留一个服务器,如果它之前没有被保留的话。 每当有人说“reserved”时,他们将被传送到私有 服务器。

传送服务:通过聊天传送到保留服务器

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetGlobalDataStore()
-- 获取保存的代码
local code = dataStore:GetAsync("ReservedServer")
if typeof(code) ~= "string" then -- 没有保存,创建一个
code = TeleportService:ReserveServer(game.PlaceId)
dataStore:SetAsync("ReservedServer", code)
end
local function joined(player)
player.Chatted:Connect(function(message)
if message == "reserved" then
TeleportService:TeleportToPrivateServer(game.PlaceId, code, { player })
end
end)
end
Players.PlayerAdded:Connect(joined)

以下代码将把当前游戏中的所有人发送到一个保留服务器。 由于保留服务器只能通过使用 TeleportService:TeleportToPrivateServer()来加入,因此之后将没有人会加入该 保留服务器。

请注意,因为每个人都会被传送,所以当前服务器将 (可能)关闭,因为不会有人留下来。

传送服务:传送到保留服务器

local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local code = TeleportService:ReserveServer(game.PlaceId)
local players = Players:GetPlayers()
TeleportService:TeleportToPrivateServer(game.PlaceId, code, players)
-- 你可以向这个函数添加额外的参数:spawnName, teleportData 和 customLoadingScreen

TeleportToSpawnByName

()

此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。

参数

placeId: number

要传送到的地点 ID。

spawnName: string

要生成 SpawnLocation 的名称。

player: Instance

要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer

默认值:"nil"
teleportData: Variant

传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。

customLoadingScreen: Instance

在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。

默认值:"nil"

返回

()

代码示例

这段代码将把玩家传送到交叉路口,如果存在名为 "TeleportSpawn" 的生成点,那么玩家将会在其上生成。这假设它是在一个 LocalScript 中使用。

传送服务:按名称传送到生成点

local TeleportService = game:GetService("TeleportService")
-- 将玩家传送到指定的生成点
TeleportService:TeleportToSpawnByName(1818, "TeleportSpawn")

活动

LocalPlayerArrivedFromTeleport

此函数在 Players.LocalPlayer 传送后进入地点时触发。 teleportDatacustomLoadingScreen 作为参数提供。

在获取 teleportDatacustomLoadingScreen 时,建议您使用 TeleportService:GetLocalPlayerTeleportData()TeleportService:GetArrivingTeleportGui()。这是因为这些函数可以立即调用,而无需等待此事件触发。

此事件应在 parent 为 ReplicatedFirstLocalScript 中立即连接。否则,当连接完成时事件可能已经触发。

加载屏幕

在传送期间,在目标地点加载时, customLoadingScreen 被挂载到 CoreGui。一旦地点加载完成, loading screenparentednil

如果您希望保留 customLoadingScreen 并执行自己的过渡,您需要将其挂载到本地玩家的 PlayerGui。例如,使用以下代码在 ReplicatedFirst 中的 LocalScript 中:


local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local ReplicatedFirst = game:GetService("ReplicatedFirst")
TeleportService.LocalPlayerArrivedFromTeleport:Connect(function(customLoadingScreen, teleportData)
local playerGui = Players.LocalPlayer:WaitForChild("PlayerGui")
ReplicatedFirst:RemoveDefaultLoadingScreen()
customLoadingScreen.Parent = playerGui
-- 在此处为屏幕添加动画
wait(5)
-- 销毁屏幕
customLoadingScreen:Destroy()
end)

如果目标地点在不同的游戏中,则不会使用 customLoadingScreen

工作室限制

请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。

参数

loadingGui: Instance

LocalPlayer 进入此地点时携带的 customLoadingScreen

dataTable: Variant

LocalPlayer 进入此地点时携带的 teleportData


TeleportInitFailed

当请求在诸如 TeleportService:TeleportAsync() 的函数中传送失败时,此事件在客户端和服务器上触发,并且玩家未离开当前服务器。它提供失败的原因以及重试传送所需的所有信息。如果组传送失败,则事件会为每个玩家触发一次。

TeleportOptions

此事件提供的 TeleportOptions 对象与原始 TeleportService:TeleportAsync() 调用中传递的对象不完全相同。它是一个新对象,填充了重试传送并将玩家发送到确切相同目的地所需的参数。这对于处理组传送失败尤其重要。

原始传送类型传送数据ReservedServerAccessCodeServerInstanceIdShouldReserveServer
单个玩家到地点原始值false
玩家到预留服务器原始值原始值或在 ShouldReserveServer 最初为 true 的情况下生成的代码false
玩家到特定服务器原始值原始值false
玩家到地点原始值与原传送中其他玩家相同的目标 IDfalse

有关如何在服务器之间传送玩家的更多信息,请参见 在地点之间传送

参数

player: Instance

未能传送的 Player 实例。

teleportResult: Enum.TeleportResult

传送失败的原因。

errorMessage: string

提供给玩家的解释传送失败的消息。

placeId: number

传送的原目标地点 ID。

teleportOptions: Instance

一个可传递回 TeleportService:TeleportAsync()TeleportOptions 对象,以重试失败的传送。