明白各个数据包的作用,以及是否正确的发挥作用
1.“120包”,客户端登录时发给服务器的,服务器处理后返回“121包”。
2.“121包” ,服务器返回给客户端的,包含登录时所有在线玩家的信息。
客户端也通过createPlayer函数成功初始化了自己的gameobject。
3.“122包”,服务器告诉客户端有新玩家进入。
3.1可以收到“122包”,但是客户端并未能成功初始化其他玩家!
3.2即使关掉exe,122还是会卡包。
下面着手解决这两个问题。
3.3首先是不初始化!服务器断开连接,几乎就是因为客户端报错,就好像之前MessageManger没有绑到map2的相机上导致不收包!所以此时的问题也应该是客户端没能正确处理“122包”所引起的。
而且通过下图可以明确看到,出了121的createPlayer成功了,所有122的都失败了!
3.4通过进一步调试定位异常的位置。
登录时,正常如下。
当有其他玩家登录,客户端收到122包的时候。
说明当有其他玩家登录时,第一次122至少执行到了Debug.Log("createPlayer---2"),其他在playerList.Add(model.id, model);这句就已经异常了。因为重复了,不能再次加入。
3.5先想办法让“第一次122”走的更远一些,通过进一步定位发现是下面这句产生了一异常:
try-catch输出的异常内容如下:
你调用的对象是空的?!也就是说我的预构体数组playerProfabs[model.job]为空?!
实测playerProfabs[model.job]的确为空!
3.6解决
4.“123包” ,客户端不停发送给服务器的,代表当前玩家的信息。单个玩家没问题。
5.“124包” ,服务器返回给客户端的,包含当前所有在线玩家的信息。和“123包”一样,单个玩家没有问题!“124包”一登上来就工作,完全独立于“123包”