Map下发客户端的消息如果继承IMessage,那么就要保证GateSession的位置是正确的,即PlayerSessionComponent的instanceId不发生变化。
第一次下发时,由于map没有GateSession的位置,找定位服务器要,并将GateSession的位置记录下来,这时能下发成功。
当Player从Gate下线又重新上线时,PlayerSessionComponent的instanceId发生变化。这时map用旧的位置就不能正常下发消息。
暂时想到的解决方案:
1、即便客户端下线了,Player也不下线,保证PlayerSessionComponent的instanceId不发生变化。但这样无法根据负载动态调整每次客户端登录时的Gate?
2、客户端下线时,向所有map发送消息,要求所有map全部移除关于这个unitid的GateSession位置记录。这样如果Scene很多的话,容易出现遗漏。
大佬们这个问题应该怎样解决?