ICloudSwitchManager
收藏
我的收藏云游戏切流管理。
前提条件 | 无 |
业务背景 | 无 |
使用限制 | 无 |
注意事项 | 无 |
相关教程 | 无 |
ICloudSwitchManager.Token
本云游戏实例的 Token 数据,。配合 ICloudSwitchTokenProvider 使用。
此 Token 只读,请勿修改。
语法
public string Token { get; }
ICloudSwitchManager.SwitchTo(...)
作为 Client 切流到指定的 Host 云游戏实例上,接收 Host 画面。
此方法为同玩
语法
public Task<SwitchResult> SwitchTo(string token, SeatIndex myIndex, string matchKey = null);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
token | string | | 是 | 目标云游戏 Host 房主实例的 token 。 |
myIndex | SeatIndex | | 是 | 我的座位号。 我作为玩家切到目标云游戏 Host 房主实例上时,分配到指定的座位号。 |
matchKey | string | null | 否 | 匹配唯一ID,调试用。 |
返回值说明
切换成功与否,错误码等信息,参考 SwitchResult 。
代码示例
async void Test() { }
ICloudSwitchManager.BeginHost(...)
本实例作为 Host,准备接收其它端连入。
注意:此方法为同玩 Host 端专用,作用是:将本云游戏实例开启为“房间”模式,其它用户可以连入并同屏游戏。
语法
public IHostRoom BeginHost(ICloudSwitchTokenProvider tokenProvider);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
tokenProvider | ICloudSwitchTokenProvider | | 是 | 其它端 Token 提供器 |
返回值说明
返回 IHostRoom 对象,参考:IHostRoom。
代码示例
async void Test() { }
ICloudSwitchManager.OnEndMatchGame (事件)
结束同玩了(返回单播)
语法
public delegate void EndMatchGameHandler(string info); public event EndMatchGameHandler OnEndMatchGame;
事件参数说明
参数名 | 类型 | 说明 |
info | string | 结束同玩时从 Host 端透传的结束信息(参考:IHostRoom.Kick、IHostRoom.End) |
SwitchResult
调用 SwitchTo 方法的返回结果。
SwitchResult.Code
调用 SwitchTo 方法的返回结果的错误码。
语法
public SwitchResultCode Code;
SwitchResult.Sccuess
调用 SwitchTo 方法是否成功。
语法
public bool Success => Code == SwitchResultCode.Success;
SwitchResult.Message
调用 SwitchTo 方法的返回结果的错误信息。
语法
public string Message;
Enum SwitchResultCode
语法
public enum SwitchResultCode { /// <summary> /// 成功 /// </summary> Success, /// <summary> /// 传递的 Token 无效 /// </summary> InvalidToken, /// <summary> /// 传递的座位号无效 /// </summary> InvalidIndex, /// <summary> /// 当前状态无效(可能调用过 SwitchTo, BeginHost 方法) /// </summary> InvalidState, /// <summary> /// 切流失败 /// </summary> Error, /// <summary> /// 被 Host 端拒绝 /// </summary> Rejected, }
ICloudSwitchTokenProvider
SwitchToken 提供器:在 Host 端中,为 ICloudSwitchManager 提供指定座位号的 Switch Token 信息。
注意:此接需要开发者实现。
ICloudSwitchTokenProvider.GetToken(...)
语法
public Task<string> GetToken(ICloudClient client, CancellationToken cancellationToken);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
client | ICloudClient | | 是 | 目标 ICloudClient |
cancellationToken | CancellationToken | | 是 | 取消操作的 CancellationToken |
返回值说明
切换成功与否,错误码等信息,参考 SwitchResult 。
IHostRoom
IHostRoom.Kick(...)
将指定座位上的 Client 踢回原实例,并可透传、携带额外信息。
可用于以下情形:
- •对局结束时,非 Host 主播想要结束匹配同玩状态回到单播时,可以使用该接口。即:在 Host 实例上将自己踢出 Host 房间。
语法
public void Kick(SeatIndex index, string info);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
index | SeatIndex | | 是 | 要踢出 Host 房间 CloudClient 对应的座位号。不能是房主自己(SeatIndex.Index0)。 |
info | string | | 是 | 踢出时需要透传、携带的信息。当被踢出房间的主播回到自己的云实例时可以进行处理。 建议透传的自定义 JSON 信息。 |
代码示例
场景举例:
某游戏中,A, B 两主播开播,经匹配后 A 所在的云游戏作为 Host 端(房间),B 连接并同玩。
对局结束后,游戏显示了结算界面,B 主播点击了结束界面的 “离开” 按钮。此时应调用
Kick(...)
来让 B 离开并回退到原云游戏实例中。
以下为伪代码,不建议直接使用:
流程 | 代码示例 |
在 Host 端逻辑 |
|
在 B 端逻辑 |
|
IHostRoom.End(...)
Host 房主结束当前同玩状态,并且将其它所以端都踢回原实例。
可用于以下情形:
- •对局结束时,Host 主播想要结束匹配同玩状态回到单播时,可以使用该接口。即:在 Host 实例上将除了自己的其它所有主播踢出房间。
语法
public void Kick(SeatIndex index, string info);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
info | string | | 是 | 将其它端都踢回原实例时需要透传的信息。 建议透传的自定义 JSON 信息。 |