这个有非常多的可能性哦,
如果是9.0的话,可以先排查这个 MessageLocationSenderComponent 它有一个 Remove 方法。
移动是一个 Location 消息,在 Gate Scene,根据 UnitId 第一次发消息给 Map。 MessageLocationSenderComponent 会根据 Location 相关的消息 去 Location 服务器获取,Location服务有Map中Unit的地址信息。这个信息是MapUnit创建的时候挂载mail的时候注册的。而gate拿到以后它就缓存起来了,具体看:MessageLocationSenderComponent。
而你重登,重进map,很可能 map unit 又新创建了一个(得看你业务怎么处理的)。
而 gate scene 的 MessageLocationSenderComponent 缓存的那个 location 是指向旧的 mapunit,这个mapunit 搞不好已经dispose了。
所以可以尝试:在gate下线逻辑中,执行 MessageLocationSenderComponent 的 remove 方法,具体搜索一下参考其他地方怎么用的。