服务 / 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
• | ||
|---|---|---|
收到队伍数据时会触发的委托 Returns
|
onTeamMatchFailure
• | ||
|---|---|---|
组队请求失败时会触发的委托 Returns
|
onViewLayoutSwitched
• | ||
|---|---|---|
获取角色展示/编辑游戏的显示模式切换的委托 Precautions 只在233内使用时生效 Returns
|
onViewRefreshed
• |
|---|
注册View刷新的委托 Precautions 只在233内使用时生效 Returns |
MulticastDelegate<OnViewRefreshed> | View刷新的委托 |
|---|
Methods
addJumpGameCallback
• Static addJumpGameCallback(callback): void client
注册游戏跳转的回调,当跨进程从其他游戏跳转到当前游戏时触发。可以被动获取来源游戏Id和携带的数据
Parameters
callback (jumpFromGameId: string, carryingData: string) => void | 要注册的回调,在接收到跳转信息时触发 |
|---|
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内使用时生效
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内使用时生效
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
string | GameId |
|---|
Precautions
只在由233拉起生效
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
string | GameVersion |
|---|
Precautions
只在由233拉起生效
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拉起生效
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
boolean | true-当前游戏是角色展示/编辑游戏,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 内使用时生效