Skip to content

TeleportOptions

概览

字段
KindData · 数据 Data
Realmcommon

TeleportOptions 用于配置玩家跨服务器传送时的行为参数,可指定是否预留新服务器、目标实例标识以及携带的自定义数据。通过设置 ReservedServerAccessCode、ServerInstanceId 和 ShouldReserveServer 等属性,能够精确控制传送目标与方式,并利用 SetTeleportData 传递可序列化的上下文信息。

适用场景

在调用 TeleportService:TeleportAsync 前,创建 TeleportOptions 实例来设定传送策略,例如将玩家传送到预留的服务器实例并携带当前游戏状态数据。

使用要点

通过 TeleportOptions.New() 或 TeleportService:CreateTeleportOptions() 创建实例,然后设置 ReservedServerAccessCode、ShouldReserveServer 等属性,调用 SetTeleportData 附加自定义数据,最后将实例传入 TeleportService:TeleportAsync。

注意事项

公开 Meta 声明 TeleportOptions.New(),但 2026-08-11 当前编辑器运行时中,该构造器返回的对象缺少 GetTeleportData/SetTeleportData;可运行代码应通过 TeleportService:CreateTeleportOptions() 创建。ReservedServerAccessCode 属于敏感凭据,不得输出到日志、持久化到公开数据或发送给无权限客户端。ReservedServerAccessCode/ServerInstanceId/ShouldReserveServer 可直接读写;SetTeleportData 参数必须可序列化(基本值、数组或字符串键表),不得包含 Unit、函数、Connection 或循环引用。

代码示例

创建传送选项并附加非敏感业务数据

lua
-- @runtime server
local TeleportService = game:GetService('TeleportService')
local options = TeleportService:CreateTeleportOptions()
options.ShouldReserveServer = true
options:SetTeleportData({ source = 'lobby' })
print('是否预留新服务器:', options.ShouldReserveServer)

属性 (3)

Name类型默认值说明
ReservedServerAccessCodeString""预留服务器战场实例的访问码,通过 TeleportService:ReserveServerAsync 或 TeleportService:ApplyIngameMatchAsync 获取。
ServerInstanceIdString""目标服务器战场实例的 ID,用于传送到指定运行中的实例(如好友所在的服务器)。
ShouldReserveServerBooltrue是否在传送时创建一个新的服务器战场实例。

函数 (3)

New

签名:New() -> TeleportOptions

创建一个新的 TeleportOptions 实例,用于配置传送参数。

返回值 TeleportOptions

示例代码

通过 TeleportService 创建传送选项

lua
-- @runtime server
local options = game:GetService("TeleportService"):CreateTeleportOptions()
options.ShouldReserveServer = true
options:SetTeleportData({ source = 'lobby' })
print('是否预留新服务器:', options.ShouldReserveServer)

GetTeleportData

签名:GetTeleportData() -> Any (传送附带数据, 未设置时返回 nil)

获取当前 TeleportOptions 实例中已设置的传送附带数据。

返回值 Any (传送附带数据, 未设置时返回 nil)

示例代码

读取传送附带数据

lua
-- @runtime server
local options = game:GetService("TeleportService"):CreateTeleportOptions()
options:SetTeleportData({ source = 'lobby' })
local data = options:GetTeleportData()
print('来源:', data and data.source)

SetTeleportData

签名:SetTeleportData(teleportData: Any) -> void

设置传送时附带的任意数据,可在目标服务器通过 Player:GetJoinData() 获取。

参数类型说明
teleportDataAny可序列化的基础值、数组或字符串键表;不得包含 Unit、函数、Connection、循环引用等运行时对象。

返回值 void

示例代码

设置可序列化的传送附带数据

lua
-- @runtime server
local options = game:GetService("TeleportService"):CreateTeleportOptions()
options:SetTeleportData({ source = 'lobby', playerLevel = 5 })
local data = options:GetTeleportData()
print('来源:', data and data.source)