在unit转换地图的时候,先unit.Removelocation()
,进入新地图 Scene
重新unit.Addlocation
的之后
ActorLocationSenderComponentSystem
下面
public static async ETTask<IActorResponse> Call(this ActorLocationSenderComponent self, long entityId, IActorRequest iActorRequest)
{
ActorLocationSender actorLocationSender = self.GetOrCreate(entityId);
这个 GetOrCreate
会取出之前的 actorLocationSender
,ActorLocationSenderComponentSystem
内部也确实看不到哪里可以remove
旧的。而旧的地址找不到在新地图的unit
,会出现在找不到actorid
的报错。
好像是在最近猫大某个更新中产生的问题。
通过手动置空actorLocationSender.ActorId = 0
后续在下面重新通过location服务器找就可以找到正确的actorid
if (actorLocationSender.ActorId == 0)
{
actorLocationSender.ActorId = await LocationProxyComponent.Instance.Get(actorLocationSender.Id);
if (actorLocationSender.InstanceId != instanceId)
{
throw new RpcException(ErrorCode.ERR_ActorLocationSenderTimeout2, $"{memoryStream.ToActorMessage()}");
}
}
if (actorLocationSender.ActorId == 0)
{
IActorRequest iActorRequest = (IActorRequest)memoryStream.ToActorMessage();
return ActorHelper.CreateResponse(iActorRequest, ErrorCode.ERR_NotFoundActor);
}
也不知道是不是我哪里搞错,看看大家有没有同样的问题,没有的话我去看看主代码。