egametang/ET · error

service discovery proxy message sender is null, scene: {self

Error message

service discovery proxy message sender is null, scene: {self.Root().Name}

What it means

Error "service discovery proxy message sender is null, scene: {self.Root().Name}" thrown in egametang/ET.

Source

Thrown at Packages/cn.etetet.servicediscovery/Scripts/Hotfix/Server/ServiceDiscoveryProxySystem.cs:726

            return ServiceDiscoveryHelper.GetServiceInfoByFilter(self.SceneNameServices, self.ServicesIndexs, filterMetadata);
        }

        public static ServiceInfo GetByName(this ServiceDiscoveryProxy self, string name)
        {
            return self.SceneNameServices[name];
        }

        #endregion

        #region 兼容调用面

        public static async ETTask<IResponse> Call(this ServiceDiscoveryProxy self, string sceneName, IRequest request, bool needException = true)
        {
            ServiceInfo serviceInfo = self.GetServiceInfo(sceneName);
            MessageSender messageSender = self.Root().GetComponent<MessageSender>();
            if (messageSender == null)
            {
                throw new Exception($"service discovery proxy message sender is null, scene: {self.Root().Name}");
            }

            return await messageSender.Call(serviceInfo.ActorId, request, needException);
        }

        #endregion
    }
}

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. 确认该 Scene 上已挂载消息发送组件(MessageLocationSenderComponent)
  2. 确认在 FiberInit 初始化完成之后再发起 service discovery 请求
  3. 检查场景类型是否属于应挂载消息发送组件的进程内 Scene

Example fix

在 FiberInit 中确保 AddComponent<MessageLocationSenderComponent>() 早于任何 Send 调用执行。

When it happens

Trigger: ServiceDiscoveryProxy 场景尚未初始化 MessageSender 组件(Scene 上缺少 MessageLocationSenderComponent 或初始化尚未完成)就发送消息

Common situations: See trigger scenarios.


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/9b8ce227d5b6bf00. Report an issue: GitHub.