概要
方法
返回 LocalPlayer 进入此地点时的 customLoadingScreen。
返回 Players.LocalPlayer 进入此地点时的 teleportData。
使用给定键检索保存的传送设置,保存使用 TeleportService:SetTeleportSetting()。
返回一个可用于将玩家传送到预留服务器的访问代码,以及其对应的 DataModel.PrivateServerId。
设置将在用户传送期间显示给本地用户的自定义 teleport GUI,在传送被调用之前。
在同一游戏中跨所有传送保留的值。
将 Player 传送到与给定 placeId 关联的地点。
一种可以将玩家或一组玩家从一个服务器传送到另一个服务器的全能方法。
- TeleportPartyAsync(placeId : number,players : Instances,teleportData : Variant,customLoadingScreen : Instance):string
将 Player 传送到与给定 placeId 和 instanceId 关联的服务器实例。
- TeleportToPrivateServer(placeId : number,reservedServerAccessCode : string,players : Instances,spawnName : string,teleportData : Variant,customLoadingScreen : Instance):()
将一组 Players 传送到使用 TeleportService:ReserveServer() 创建的预留服务器。
- TeleportToSpawnByName(placeId : number,spawnName : string,player : Instance,teleportData : Variant,customLoadingScreen : Instance):()
TeleportService:Teleport() 的一种变体,使得 Player 在目标地点的给定名称的 SpawnLocation 处生成。
活动
当 LocalPlayer 在传送后进入地点时触发。
- TeleportInitFailed(player : Instance,teleportResult : Enum.TeleportResult,errorMessage : string,placeId : number,teleportOptions : Instance):RBXScriptSignal
当传送未能开始,玩家仍然在其当前服务器时触发。
属性
方法
GetArrivingTeleportGui
此函数返回 LocalPlayer 进入此地点时的 customLoadingScreen。
请注意,如果目标地点在不同的游戏中,将不会使用 customLoadingScreen。
加载屏幕
在传送期间,在目标地点加载时, customLoadingScreen 被挂载到 CoreGui。一旦地点加载完成, loading screen 被 parented 到 nil。
如果您希望保留 customLoadingScreen 并执行自己的过渡,您需要将其挂载到本地玩家的 PlayerGui。有关此操作的示例,请参见下面的代码示例。
工作室限制
请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。
返回
LocalPlayer 进入此地点时的 customLoadingScreen。
代码示例
以下代码放置在 ReplicatedFirst 中的 LocalScript 内 将在自定义传送加载屏幕上保留五秒,然后销毁它。
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
此函数返回 Players.LocalPlayer 到达时的传送数据。它只能从客户端调用。
骗子可以伪造传送数据。通过 DataStoreService 这样的服务传送安全数据以防止篡改。
返回
Players.LocalPlayer 进入此地点时的传送数据。
代码示例
当放入 StarterPlayerScripts 时,这个示例在玩家加入 游戏时运行,并打印玩家之前 服务器提供的任何传送数据。
local TeleportService = game:GetService("TeleportService")
local teleportData = TeleportService:GetLocalPlayerTeleportData()
print("本地玩家使用以下数据到达:", teleportData)
GetPlayerPlaceInstanceAsync
此函数返回所给 UserId 用户所在服务器的 PlaceId 和 JobId,前提是它在与当前地点相同的游戏中。
然后,可以使用此信息调用 TeleportService:TeleportToPlaceInstance() 让用户加入目标用户的服务器。
成功查找后,函数将返回以下值:
# | 名称 | 类型 | 描述 |
---|---|---|---|
1 | currentInstance | bool | 布尔值,指示用户是否在当前实例中找到 |
2 | error | string | 查找失败时的错误消息 |
3 | placeId | int64 | 用户所在服务器的 PlaceId |
4 | instanceId | string | 用户所在服务器的 JobId |
如果在查找过程中出现问题,例如用户离线,将抛出错误。建议您将调用此函数的代码包裹在 pcall 中。
限制
使用此函数时,您应注意以下限制:
- 此函数只能由服务器调用。
- 如果用户正在传送,此函数可能无法返回正确的信息。
- 此函数可能抛出错误,因此开发者应该将其包裹在 pcall()(见下面的示例)中。
- 由于此函数返回服务器的 JobId,而非 TeleportService:ReserveServer() 返回的访问代码,因此返回的 ID 不适合用于预留服务器。
工作室限制
请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。
参数
所给 Player 的 Player.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
此函数使用给定键检索保存的传送设置,这些设置是使用 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 应用程序中进行游戏。
参数
使用 TeleportService:SetTeleportSetting() 存储值的键。
返回
存储在给定键下的值。
ReserveServer
此函数返回一个可用于将玩家传送到预留服务器的访问代码,以及该服务器的 DataModel.PrivateServerId。它只能在服务器上调用。
预留服务器
您可以通过以下方式访问预留服务器:
- 使用 TeleportService:TeleportToPrivateServer(), 以及访问代码 ReserveServer 返回的内容。
- 当第一次使用访问代码时,服务器会启动。
- 访问代码保持有效,意味着即使没有游戏服务器在运行,也可以加入预留服务器(在这种情况下,将启动一个新服务器)。
您可以使用以下代码检查当前服务器是否为预留服务器:
local isReserved = game.PrivateServerId ~= "" and game.PrivateServerOwnerId == 0
DataModel.PrivateServerId 在与该服务器访问代码关联的所有服务器实例中是恒定的, DataModel.JobId 不是。
工作室限制
请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。
跨平台游戏
禁用跨游戏功能的 Xbox 和 PlayStation 上的玩家将进入与启用跨游戏平台的玩家不同的服务器。这可能导致与相同 PrivateServerId 的多个游戏服务器存在。您可以使用 DataModel.MatchmakingType 来区分这些游戏服务器。
参数
为其创建预留服务器的地点的 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 screen 被 parented 到 nil。
可以通过 TeleportService:GetArrivingTeleportGui() 在目标地点获取该 ScreenGui,使您可以将其挂载到 PlayerGui 并执行自己的过渡。
建议您还在初始地点的过程中将 ScreenGui parent 到 PlayerGui 。
工作室限制
请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。
参数
返回
代码示例
这个代码片段演示了如何使用 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 = falseTeleportService:SetTeleportSetting("isCrouching", isCrouching)
存储的值可以采用以下形式之一:
- 只有字符串或整数的表
- 字符串
- 数字
- 布尔值
如果在给定键下已经存储了数据,前一个值将被新值覆盖。
与 GlobalDataStores 的区别
虽然它们有一些相似之处,但传送设置和数据存储之间有一些关键区别:
- GlobalDataStore:SetAsync() 将数据存储在 Roblox 服务器上,而 SetTeleportSetting 将数据存储在本地。
- 存储在 GlobalDataStore 中的数据在用户离开游戏宇宙后被保留,而传送设置则不保留。
- GlobalDataStores 只能在服务器上访问,而传送设置只能在客户端访问。
- GlobalDataStores 有使用限制,而传送设置则没有。
一般而言,传送设置应用于在游戏中跨不同地点保留客户端信息。GlobalDataStores 应用于保存需要跨玩家会话访问的重要玩家数据。
传送设置和安全性
由于传送设置存储在本地,因此恶意用户可能会对其进行篡改。通过实施服务器端验证可以降低这种风险。
工作室限制
请注意,此服务在 Roblox Studio 中的游戏测试期间不起作用;要测试使用它的体验的某些方面,您必须发布体验并在 Roblox 应用程序中进行游戏。
参数
此键用于存储值。其中可以使用 TeleportService:GetTeleportSetting() 检索对应的值。
要存储的值。
返回
Teleport
此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。
参数
要传送到的地点的 ID。
要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer。
传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。
在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。
返回
代码示例
这个代码片段演示了如何使用 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)
这个代码片段演示了如何使用 TeleportService 将 Player 从服务器传送。
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
此函数作为将玩家或一组玩家从一个服务器传送到另一个服务器的全能方法。可以用于:
- 将玩家传送到不同的地点。
- 将玩家传送到特定的服务器。
- 将玩家传送到预留服务器。
组传送限制
- 玩家组只能在单个体验内传送。
- 单次 TeleportService:TeleportAsync() 调用最多只能传送 50 名玩家。
潜在错误
这是导致传送失败的潜在原因列表,从无效传送到网络问题。
错误 | 描述 |
---|---|
无效的 placeId | 提供的地点 ID 小于 0。 |
玩家为空 | 提供的传送玩家列表为空。 |
玩家实例列表不正确 | 提供的任何玩家都不是 Player 对象。 |
TeleportOptions 类型不正确 | 提供的 teleportOption 不是 TeleportOptions 对象。 |
从客户端调用 TeleportAsync | 客户端调用了 TeleportAsync,该函数只能从服务器调用。 |
不兼容的参数 | 使用了相互冲突的传送选项,TeleportService 无法确定将玩家发送到哪里。 冲突的 TeleportOption 参数: * ReservedServerAccessCode 和 ServerInstanceId * ShouldReserveServer 和 ServerInstanceId * ShouldReserveServer 和 ReservedServerAccessCode |
有关如何在服务器之间传送玩家以及如何接收传送的用户数据的更多信息,请参见 在地点之间传送。
参数
玩家应传送到的地点 ID。
要传送的玩家数组。
可选的 TeleportOptions 对象,包含传递给 TeleportService:TeleportAsync() 调用的附加参数。如果未传递,则不会返回任何结果。
返回
如果传递了 TeleportOptions 参数,则这是一个 TeleportAsyncResult 对象,提供有关最终传送目的地的信息。
TeleportPartyAsync
此方法不应在新工作中使用;多个传送函数已合并为一个新方法,TeleportAsync(),应使用该方法。
参数
要传送到的地点 ID。
要传送的 Players 数组。
传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。
在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。
返回
被传送到的 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(),应使用该方法。
参数
要传送到的地点 ID。
要传送到的服务器实例的 DataModel.JobId。
要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer。
要生成的 SpawnLocation 的可选名称。
传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。
在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。
返回
代码示例
以下代码示例,当放置在 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(),应使用该方法。
参数
要传送到的地点 ID。
使用 TeleportService:ReserveServer() 返回的预留服务器访问代码。
要传送的 Players 数组。
要生成的 SpawnLocation 的可选名称。
传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。
在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。
返回
代码示例
以下代码将保留一个服务器,如果它之前没有被保留的话。 每当有人说“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(),应使用该方法。
参数
要传送到的地点 ID。
要生成 SpawnLocation 的名称。
要传送的 Player,如果此函数从客户端调用,则默认为 Players.LocalPlayer。
传送目的地的可选数据。可以使用 TeleportService:GetLocalPlayerTeleportData() 进行检索。
在目标地点的 CoreGui 中放置的可选自定义加载屏幕。可以使用 TeleportService:GetArrivingTeleportGui() 进行检索。
返回
代码示例
这段代码将把玩家传送到交叉路口,如果存在名为 "TeleportSpawn" 的生成点,那么玩家将会在其上生成。这假设它是在一个 LocalScript 中使用。
local TeleportService = game:GetService("TeleportService")
-- 将玩家传送到指定的生成点
TeleportService:TeleportToSpawnByName(1818, "TeleportSpawn")
活动
LocalPlayerArrivedFromTeleport
此函数在 Players.LocalPlayer 传送后进入地点时触发。 teleportData 和 customLoadingScreen 作为参数提供。
在获取 teleportData 和 customLoadingScreen 时,建议您使用 TeleportService:GetLocalPlayerTeleportData() 和 TeleportService:GetArrivingTeleportGui()。这是因为这些函数可以立即调用,而无需等待此事件触发。
此事件应在 parent 为 ReplicatedFirst 的 LocalScript 中立即连接。否则,当连接完成时事件可能已经触发。
加载屏幕
在传送期间,在目标地点加载时, customLoadingScreen 被挂载到 CoreGui。一旦地点加载完成, loading screen 被 parented 到 nil。
如果您希望保留 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 应用程序中进行游戏。
参数
LocalPlayer 进入此地点时携带的 customLoadingScreen。
LocalPlayer 进入此地点时携带的 teleportData。
TeleportInitFailed
当请求在诸如 TeleportService:TeleportAsync() 的函数中传送失败时,此事件在客户端和服务器上触发,并且玩家未离开当前服务器。它提供失败的原因以及重试传送所需的所有信息。如果组传送失败,则事件会为每个玩家触发一次。
TeleportOptions
此事件提供的 TeleportOptions 对象与原始 TeleportService:TeleportAsync() 调用中传递的对象不完全相同。它是一个新对象,填充了重试传送并将玩家发送到确切相同目的地所需的参数。这对于处理组传送失败尤其重要。
原始传送类型 | 传送数据 | ReservedServerAccessCode | ServerInstanceId | ShouldReserveServer |
---|---|---|---|---|
单个玩家到地点 | 原始值 | 无 | 无 | false |
玩家到预留服务器 | 原始值 | 原始值或在 ShouldReserveServer 最初为 true 的情况下生成的代码 | 无 | false |
玩家到特定服务器 | 原始值 | 无 | 原始值 | false |
玩家到地点 | 原始值 | 无 | 与原传送中其他玩家相同的目标 ID | false |
有关如何在服务器之间传送玩家的更多信息,请参见 在地点之间传送。
参数
传送失败的原因。
提供给玩家的解释传送失败的消息。
传送的原目标地点 ID。
一个可传递回 TeleportService:TeleportAsync() 的 TeleportOptions 对象,以重试失败的传送。