谢谢!原来如此,我有些头绪了。梳理了以下几个细节小问题:
- 问题1
JoinRandomRoom失败后的处理代码示例,我没看太明白,这个play
是什么的实例(试过client、LeanCloud.Play都不对)?而这个On的调用又该写在何处呢?
play.On(Event.ROOM_JOIN_FAILED, (error) => {
if (error["code"] == 4301)
{
var props = new Dictionary<string, object>();
props.Add("level", 2);
var options = new RoomOptions()
{
// 设置最大人数,当房间满员时,服务端不会再匹配新的玩家进来。
MaxPlayerCount = 3,
// 设置玩家掉线后的保留时间为 120 秒
PlayerTtl = 120,
// 房间的自定义属性
CustomRoomProperties = props,
// 从房间的自定义属性中选择匹配用的 key
CustoRoomPropertyKeysForLobby = new List<string>() { "level" },
};
play.CreateRoom(roomOptions: options);
}
});
该如何与JoinRandomRoom的Try Catch代码结合呢?
try {
await client.JoinRandomRoom(matchProps);
} catch (PlayException e) {
// 加入房间失败
Debug.LogErrorFormat("{0}, {1}", e.Code, e.Detail);
// 这里加入试着加入play.On代码块,失败了;而且`e["code"]`的用法也会报错
}
问题2
在房间关掉后await client.SetRoomOpened(false);,之前断线及未来断线的玩家是否还可以通过断线重连的方式重新键入?
问题3
在房间未关闭时,看你的描述,新玩家也是可以通过Random的方式连入该房间顶替掉断线的玩家;所谓“在房间内保留断线用户”意思就是保存该Player.CustomProperties,而不是说保留该位置作为expectedPlayer,只允许该玩家重连。这样理解有问题吗?
问题4
我在LeanCloud.Play.Client里发现了一个MatchRandom接口,文档里没有对这个接口的介绍。这个接口是否对此问题有帮助?
谢谢!