ICloudSeat收藏我的收藏
收藏
我的收藏前提条件 | 无 |
业务背景 | 无 |
使用限制 | 无 |
注意事项 | 无 |
相关教程 | 无 |
云座位,一个云同步能力的游戏最可以支持 4 个人同玩。座位号对应 0 ~ 3。
ICloudSeat.Index
座位号。
语法
SeatIndex Index { get; }
类型说明
类型为 SeatIndex ,参考 SeatIndex 。
代码示例
void Test() { var seat = ICloudSync.Instance.SeatManager.HostSeat; Debug.Log($"房主座位号:{seat.Index}"); }
ICloudSeat.State
当前座位状态。
语法
SeatState State { get; }
类型说明
类型为 SeatState ,参考 SeatState 。
代码示例
void Test() { var seat = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); if (seat.State == SeatState.InUse) { Debug.Log($"1 号座位上有玩家,名为:{seat.PlayerInfo.NickName}"); } }
ICloudSeat.PlayerInfo
“坐”在这个座位上的玩家信息。
注意:只有 State 为 SeatState.InUse 时才有 PlayerInfo 对象,否则为 null。
语法
IPlayerInfo PlayerInfo { get; }
类型说明
类型为 IPlayerInfo ,参考 IPlayerInfo 。
代码示例
void Test() { var seat = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); if (seat.State == SeatState.InUse) { Debug.Log($"1 号座位上有玩家,名为:{seat.PlayerInfo.NickName}"); } }
ICloudSeat.View
“坐”在这个座位上的玩家可以看到的视图对象,通过 ICloudViewProvider 创建提供。
注意:只有 State 为 SeatState.InUse 时才有 View 对象,否则为 null。
语法
ICloudView View { get; }
类型说明
类型为 ICloudView,参考 ICloudView 。
代码示例
void Test() { var seat = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); if (seat.State == SeatState.InUse) { var myView = (MyView) seat.View; myView.XXX(...) } }
ICloudSeat.OnSeatPlayerJoined (事件)
当有玩家加入了此座位。
语法
public delegate void SeatEventHandler(ICloudSeat seat); event SeatEventHandler OnSeatPlayerJoined;
事件参数说明
参数名 | 类型 | 说明 |
seat | ICloudSeat | 发生事件对应的座位 |
代码示例
void Test() { var seat1 = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); seat1.OnSeatPlayerJoined += OnPlayer1Joined; } private void OnPlayer1Joined(ICloudClient client, RemoteMouseEvent e) { Debug.Log($"1 号玩家已加入"); }
ICloudSeat.OnSeatPlayerLeaving (事件)
当玩家正在离开此座位。
语法
public delegate void SeatEventHandler(ICloudSeat seat); event SeatEventHandler OnSeatPlayerLeaving;
事件参数说明
参数名 | 类型 | 说明 |
seat | ICloudSeat | 发生事件对应的座位 |
代码示例
void Test() { var seat1 = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); seat1.OnSeatPlayerLeaving += OnPlayer1Leaving; } private void OnPlayer1Leaving(ICloudClient client, RemoteMouseEvent e) { Debug.Log($"1 号玩家已离开"); }
ICloudSeat.OnWillDestroy (事件)
注意:该事件为一个必接事件,开发者需要响应此事件,在云游戏进程销毁前处理同玩玩家的退出问题。
语法
public delegate void WillDestroyHandler(DestroyInfo info); event WillDestroyHandler OnWillDestroy;
事件参数说明
参数名 | 类型 | 说明 |
info | 云游戏实例即将销毁的信息 |
代码示例
void Test() { var seat1 = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); seat1.OnWillDestroy += OnWillDestroy; } private void OnWillDestroy(DestroyInfo e) { Debug.Log($"游戏进程将在: {e.Time} 秒后销毁!"); }
ICloudSeat.WaitJoin(...)
等待玩家加入。
语法
Task WaitJoin(CancellationToken token);
参数说明
参数名 | 类型 | 默认值 | 必填 | 说明 |
token | CancellationToken | 是 | 取消令牌 |
代码示例
async void Test() { var seat = ICloudSync.Instance.SeatManager.GetSeat(SeatIndex.Index1); await seat.WaitJoin(CancellationToken.None); Debug.Log($"1 号座位玩家已加入"); }
enum SeatState
语法
public enum SeatState { /// <summary> /// 空闲 /// </summary> Empty, /// <summary> /// 在使用中(有玩家) /// </summary> InUse }