public override async void Execute(INotification notification) { switch (notification.Name) { case NoticeConst.PassportEnter: foreach (var option in appSetting.options) { switch (option.Type) { case DotHass.Unity.Net.ChannelType.TCP: await net.ConnectTcp(option); break; case DotHass.Unity.Net.ChannelType.KCP: await net.ConnectKcp(option); break; default: break; } } var loginScreen = screen.Find("PassportPanel"); // 注册Prxoy Facade.RegisterProxyUseTName <PassportProxy>(); // 注册Mediator Facade.RegisterOnceMediatorUseTName <PassportMediator>(loginScreen.GetComponent <UIControlData>()); break; case NoticeConst.PassportExit: Facade.SendNotification(SceneConst.FlowScene, new SceneFlowEvent() { UnloadSceneName = AppConst.EnterSceneName, LoadSceneName = AppConst.MainSceneName, ExtraBindings = (container) => { // todo:这里可以处理一定传值操作 // container.BindInstance(mainLoader); }, CallBack = () => { //Todo:移除mediator和不必要的command Facade.RemoveProxy(PassportProxy.TypeName); Facade.RemoveMediator(PassportMediator.TypeName); Facade.RemoveCommand(NoticeConst.PassportEnter); Facade.RemoveCommand(NoticeConst.PassportExit); } }); break; default: break; } }