任务一:当进程结束时,要想办法通知服务器玩家已下线。
任务二:即便客户端发生异常,也要优先保障服务器的正常运行!
1.exe退了unity中gameobject不消失,再登exe,unity直接卡死自杀。不过此时服务器依旧坚挺!
2.在服务器中找到leave,此时command=5
对应的函数如下: 很明显,是收5发6,之前01234都有过了
而且发现只有“发包下线”这一种下线方法!
3.来到客户端 ,需要做两件事,处理6,发送5,游戏就是这样一点一点积累出来的!
3.1处理“126”
messagemanager中:
maphandler中:
3.2发送“125”,现在情况如下:exe正常退出时,可以触发125函数,unity中断play不会触发125!exe126现在可以destroy游戏中的模型,而且可以多次重复登录!
经过尝试发现unity play中断关不干净,再次play才能关干净!
在服务器中增加断点,借助堆栈,看看125包是receive到的,还是服务器直接自己生成126的。
看到session close的时候就算是明白了,是服务器自产生的!只要关的彻底,服务器应该问题不大。
得到结论,现在的126是服务器产生的,不是任何一个客户端发送的!