主题
TeleportAsyncResult
概览
| 字段 | 值 |
|---|---|
| Kind | Data · 数据 Data |
| Realm | common |
传送异步结果用于承载一次传送请求完成后可读取的预留服务器战场实例访问码,帮助开发者把同一批玩家引导到同一个服务器实例中。它不提供自理构造入口,只能由 TeleportService:TeleportAsync 的返回值产生,其核心内容集中在 ReservedServerAccessCode 属性上。
适用场景
当玩法需要为一批玩家单独开辟一场对局(例如组队房间或独立战场)时,可以先预留服务器,再调用 TeleportService:TeleportAsync 传送玩家,并从返回的传送异步结果中取出 ReservedServerAccessCode 分发给其余队友,让所有人进入同一实例。
使用要点
通过 TeleportService:TeleportAsync 获取结果;业务只判断结果是否存在或把访问码直接用于受控的服务端后续传送流程,不打印、不展示、不写入公开存储。
注意事项
TeleportAsyncResult 由 TeleportService:TeleportAsync 返回,不可直接构造。ReservedServerAccessCode 若存在,应按敏感凭据处理,不要写入日志或客户端可见数据。
代码示例
传送后只记录非敏感结果状态
lua
-- @runtime server
local TeleportService = game:GetService('TeleportService')
local Players = game:GetService('Players')
local Task = game:GetService('Task')
local function teleportAndCheckResult(mapId)
if mapId == nil or mapId == '' then return end
Task:Spawn(function()
local players = Players:GetPlayers()
if #players == 0 then
print('当前没有玩家在线,无法传送')
return
end
local options = TeleportService:CreateTeleportOptions()
options.ShouldReserveServer = true
local ok, result = pcall(function()
return TeleportService:TeleportAsync(mapId, players, options)
end)
if ok and result ~= nil then
local hasReservedServer = result.ReservedServerAccessCode ~= nil and result.ReservedServerAccessCode ~= ''
print('传送请求完成,是否使用预留服务器:', hasReservedServer)
end
end)
end
-- 调用方把项目配置中的真实地图 ID 传给 teleportAndCheckResult属性 (1)
| Name | 类型 | 默认值 | 说明 |
|---|---|---|---|
ReservedServerAccessCode | String | "" | 预留服务器战场实例访问码。该只读结果由 TeleportService:TeleportAsync 返回;若存在,应仅在受控的服务端传送流程中读取和传递,不要重新赋值、打印或暴露给客户端。 |
