Skip to content
RouteService

服务 / RouteService

RouteService Class

游戏管理器

Table of contents

Accessors

onReceiveTeamData(): MulticastDelegate<(teamId: string, data: Record<string, unknown>) => void>
收到队伍数据时会触发的委托
onTeamMatchFailure(): MulticastDelegate<(failureInfo: TeamMatchFailureInfo) => void>
组队请求失败时会触发的委托
onViewLayoutSwitched(): MulticastDelegate<OnViewLayoutSwitched> client
获取角色展示/编辑游戏的显示模式切换的委托
onViewRefreshed(): MulticastDelegate<OnViewRefreshed> client
注册View刷新的委托

Methods

addJumpGameCallback(callback: (jumpFromGameId: string, carryingData: string) => void): void client
注册游戏跳转的回调,当跨进程从其他游戏跳转到当前游戏时触发。可以被动获取来源游戏Id和携带的数据
clearTeamCarryingData(teamId: string): void server
删除指定Team在组队跳转时带入游戏的数据
enterDressUpGame(carryingData?: string): void client
退出当前游戏进程,回到主线程的角色编辑游戏。
enterLocalGame(targetGameId: string, gamePath: string, carryingData?: string): void client
跳转本地游戏(可编辑的UGC工程) ,同进程跳转
enterNewGame(targetGameId: string, carryingData?: string): void client
跳转到新游戏,同进程跳转
enterNewGameByTeam(targetGameId: string, teammatePlayerIds: string[], carryingData?: Record<string, unknown>[]): Promise<void> server
组队跳游戏,可以携带数据
enterSquareGame(squareMgsGameId?: string, carryingData?: string): void client
将当前游戏进程恢复小窗,拉起新进程进入广场游戏。与默认的跳游戏模式不同。
getGameCarryingData(): Promise<string> client
获取拉起游戏时传入的数据
getGameId(): string client
获取游戏Id
getGameVersion(): string client
获取游戏版本
getJumpFromMGSGameId(): Promise<string> client
获取游戏来源信息
getMGSGameId(): string client
获取短游戏ID
getTeamCarryingData(teamId: string): Record<string, unknown> server
获取指定Team在组队跳转时带入游戏的数据
isInDressUpGame(): boolean client
判断当前游戏是不是角色展示/编辑游戏
notifyCharacterLoaded(): void client
通知233/Playza角色形象加载完毕
notifyGameLoadingState(newState: number): void client
通知 233/Playza 当前游戏加载状态(收到这个协议,233 停止下载,清除 Temp 文件)
requestGameId(targetMgsGameId: string): Promise<string>
用内容库 MGSGameId 来换取 gameId
requestMGSGameId(targetGameId: string): Promise<string>
用gameId来换取内容库MGSGameId
requestRefreshView(): void client
TS请求233刷新View
requestSwitchViewLayout(newState: number): void client
切换角色展示/编辑游戏的显示模式。

Accessors

onReceiveTeamData

Static get onReceiveTeamData(): MulticastDelegate<(teamId: string, data: Record<string, unknown>) => void>

收到队伍数据时会触发的委托

Returns

MulticastDelegate<(teamId: string, data: Record<string, unknown>) => void>

onTeamMatchFailure

Static get onTeamMatchFailure(): MulticastDelegate<(failureInfo: TeamMatchFailureInfo) => void>

组队请求失败时会触发的委托

Returns

MulticastDelegate<(failureInfo: TeamMatchFailureInfo) => void>

onViewLayoutSwitched

Static get onViewLayoutSwitched(): MulticastDelegate<OnViewLayoutSwitched> client

获取角色展示/编辑游戏的显示模式切换的委托

Precautions

只在233内使用时生效

Returns

MulticastDelegate<OnViewLayoutSwitched>角色展示/编辑游戏的显示模式切换的委托

onViewRefreshed

Static get onViewRefreshed(): MulticastDelegate<OnViewRefreshed> client

注册View刷新的委托

Precautions

只在233内使用时生效

Returns

MulticastDelegate<OnViewRefreshed>View刷新的委托

Methods

addJumpGameCallback

Static addJumpGameCallback(callback): void client

注册游戏跳转的回调,当跨进程从其他游戏跳转到当前游戏时触发。可以被动获取来源游戏Id和携带的数据

Parameters

callback (jumpFromGameId: string, carryingData: string) => void要注册的回调,在接收到跳转信息时触发
使用示例:创建一个名为RouteExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,当从其他游戏跳转到当前游戏时,会在角色名称处显示跳转游戏的gameId和携带的数据
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        RouteService.addJumpGameCallback((id: string, data: string) => {
            player.character.displayName = "JumpGame :" + data + "from " + id;
        })
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        RouteService.addJumpGameCallback((id: string, data: string) => {
            player.character.displayName = "JumpGame :" + data + "from " + id;
        })
    }
}

clearTeamCarryingData

Static clearTeamCarryingData(teamId): void server

删除指定Team在组队跳转时带入游戏的数据

Parameters

teamId string目标 teamId range: 字符串长度依据 teamId 长度而定

enterDressUpGame

Static enterDressUpGame(carryingData?): void client

退出当前游戏进程,回到主线程的角色编辑游戏。

Parameters

carryingData? string跳游戏携带的数据 default: undefined range:不做限制

Precautions

只在233内使用时生效

使用示例:创建一个名为RouteExample的脚本,挂载到场景中,运行后,10秒后会自动跳转到角色编辑游戏。
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        await TimeUtil.delaySecond(10);
        RouteService.enterDressUpGame();
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        await TimeUtil.delaySecond(10);
        RouteService.enterDressUpGame();
    }
}

enterLocalGame

Static enterLocalGame(targetGameId, gamePath, carryingData?): void client

跳转本地游戏(可编辑的UGC工程) ,同进程跳转

Parameters

targetGameId string目标游戏的GameId,一般来说,这里会是模板游戏的gameId range:依据 targetGameId 长度而定
gamePath string本地游戏工程的路径 range:依据 gamePath 路径长度而定
carryingData? string跳游戏携带的数据 default: undefined range:不做限制

Precautions

需要用创建本地工程时所对应模板游戏的gameId


enterNewGame

Static enterNewGame(targetGameId, carryingData?): void client

跳转到新游戏,同进程跳转

Parameters

targetGameId string要跳转的目标游戏 ID,GameId range:依据 targetGameId 长度而定
carryingData? string跳游戏携带的数据 default: undefined range:不做限制
使用示例: 跳转到新游戏
ts
// 更多游戏跳游戏的实例请前往论坛看帖子 https://forum.ark.online/forum.php?mod=viewthread&tid=1145
// 这个gameid可以在这里获取: 创作者中心→我的游戏→游戏名下方一个p_开头的就是gameid,点旁边的复制就可以复制过来
// 这里的 P_21def1ac9e0a4e73500d90bb2b5d53bfd1d9cf40 是游戏《只因哥大战小黑子》的gameid
// 跳游戏的话,默认会跳往 现行的、目前处在上线状态的、过了审的那个版本
// 没有过审的话,将无法跳进去哦
mw.RouteService.enterNewGame("P_21def1ac9e0a4e73500d90bb2b5d53bfd1d9cf40");
// 更多游戏跳游戏的实例请前往论坛看帖子 https://forum.ark.online/forum.php?mod=viewthread&tid=1145
// 这个gameid可以在这里获取: 创作者中心→我的游戏→游戏名下方一个p_开头的就是gameid,点旁边的复制就可以复制过来
// 这里的 P_21def1ac9e0a4e73500d90bb2b5d53bfd1d9cf40 是游戏《只因哥大战小黑子》的gameid
// 跳游戏的话,默认会跳往 现行的、目前处在上线状态的、过了审的那个版本
// 没有过审的话,将无法跳进去哦
mw.RouteService.enterNewGame("P_21def1ac9e0a4e73500d90bb2b5d53bfd1d9cf40");

enterNewGameByTeam

Static enterNewGameByTeam(targetGameId, teammatePlayerIds, carryingData?): Promise<void> server

组队跳游戏,可以携带数据

Parameters

targetGameId string要跳转的游戏的 GameId range: 依据 targetGameId 长度而定
teammatePlayerIds string[]队友的playerId数组
carryingData? Record<string, unknown>[]要带入新游戏的数据 default: undefined range:不做限制

Returns

Promise<void>组队跳转请求回调

enterSquareGame

Static enterSquareGame(squareMgsGameId?, carryingData?): void client

将当前游戏进程恢复小窗,拉起新进程进入广场游戏。与默认的跳游戏模式不同。

Parameters

squareMgsGameId? string新的广场游戏 GameId,如果为空,则使用各环境默认的广场游戏 Id default: null range:字符串长度依据 squareMgsGameId 而定
carryingData? string跳游戏携带的数据 default: undefined range:不做限制

Precautions

只在233内使用时生效

使用示例:创建一个名为RouteExample的脚本,挂载到场景中,运行后,10秒后进入广场游戏。
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        await TimeUtil.delaySecond(10);
        RouteService.enterSquareGame();
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        await TimeUtil.delaySecond(10);
        RouteService.enterSquareGame();
    }
}

getGameCarryingData

Static getGameCarryingData(): Promise<string> client

获取拉起游戏时传入的数据

Returns

Promise<string>拉起游戏时传入的数据

Precautions

如果是组队跳游戏,请使用getTeamCarryingData在服务端获取数据。


getGameId

Static getGameId(): string client

获取游戏Id

Returns

stringGameId

Precautions

只在由233拉起生效

使用示例:创建一个名为RouteExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,发布游戏在移动端测试,会在角色名显示GameId,PC环境为空
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "gameId:" + RouteService.getGameId();
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "gameId:" + RouteService.getGameId();
    }
}

getGameVersion

Static getGameVersion(): string client

获取游戏版本

Returns

stringGameVersion

Precautions

只在由233拉起生效

使用示例:创建一个名为RouteExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,发布游戏在移动端测试,会在角色名显示游戏版本,PC环境为空
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "游戏版本:" + RouteService.getGameVersion();
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "游戏版本:" + RouteService.getGameVersion();
    }
}

getJumpFromMGSGameId

Static getJumpFromMGSGameId(): Promise<string> client

获取游戏来源信息

Returns

Promise<string>当前游戏是从哪个游戏跳转过来的,为空则不是游戏跳转

getMGSGameId

Static getMGSGameId(): string client

获取短游戏ID

Returns

string短游戏ID

Precautions

只在由233拉起生效

使用示例:创建一个名为RouteExample的脚本,放置在对象栏中,打开脚本,将原本内容修改为如下内容,发布游戏在移动端测试,会在角色名显示短游戏ID,PC环境为空
ts
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "短游戏ID:" + RouteService.getMGSGameId();
    }
}
@Component
export default class RouteExample extends mw.Script {

    protected onStart(): void {
        if (!SystemUtil.isClient()) return;
        this.test();
    }

    private async test(): `Promise`<`void`\> {
        let player = Player.localPlayer;
        player.character.displayName = "短游戏ID:" + RouteService.getMGSGameId();
    }
}

getTeamCarryingData

Static getTeamCarryingData(teamId): Record<string, unknown> server

获取指定Team在组队跳转时带入游戏的数据

Parameters

teamId string要查询的 teamId range: 字符串长度依据 teamId 长度而定

Returns

Record<string, unknown>指定队伍的数据

isInDressUpGame

Static isInDressUpGame(): boolean client

判断当前游戏是不是角色展示/编辑游戏

Returns

booleantrue-当前游戏是角色展示/编辑游戏,false-不是

Precautions

在PIE或者服务端调用则固定返回false


notifyCharacterLoaded

Static notifyCharacterLoaded(): void client

通知233/Playza角色形象加载完毕

Precautions

只在233/Playza内使用时生效


notifyGameLoadingState

Static notifyGameLoadingState(newState): void client

通知 233/Playza 当前游戏加载状态(收到这个协议,233 停止下载,清除 Temp 文件)

Parameters

newState number状态 Id。newState = 1 : 游戏加载成功,newState = 2 :游戏加载失败 range:1,2 type: 整数

Precautions

只在233/Playza内使用时生效


requestGameId

Static requestGameId(targetMgsGameId): Promise<string>

用内容库 MGSGameId 来换取 gameId

Parameters

targetMgsGameId string目标游戏的内容库gameId range:依据 targetMgsGameId 长度而定

Returns

Promise<string>对应的gameId

requestMGSGameId

Static requestMGSGameId(targetGameId): Promise<string>

用gameId来换取内容库MGSGameId

Parameters

targetGameId string目标游戏的 gameId range:依据 targetGameId 长度决定

Returns

Promise<string>对应的MGSGameId

requestRefreshView

Static requestRefreshView(): void client

TS请求233刷新View

Precautions

只在233内使用时生效


requestSwitchViewLayout

Static requestSwitchViewLayout(newState): void client

切换角色展示/编辑游戏的显示模式。

Parameters

newState number新模式。newState = 1 为“角色展示模式”,newState = 2 为“角色编辑模式” range:1,2 type:整数

Precautions

只在 233/Playza 内使用时生效