async void Start() { Session session = null; try { session = NetworkClient.Instance.Create("127.0.0.1:10002"); R2C_Login r2CLogin = await session.Call <R2C_Login>(new C2R_Login() { Account = "Test1", Password = "******" }); Debug.LogError($"R2C_Login: {r2CLogin.Address}"); gateSession = NetworkClient.Instance.Create(r2CLogin.Address); G2C_LoginGate g2CLoginGate = await gateSession.Call <G2C_LoginGate>(new C2G_LoginGate() { Key = r2CLogin.Key }); Debug.LogError("登陆gate成功!"); Debug.LogError(g2CLoginGate.PlayerId.ToString()); } catch (Exception e) { Log.Error(e.ToString()); } finally { session?.Dispose(); } }
public static async Task Test2(Session rGateSession) { G2C_LoginGate g2CLoginGate = await NetworkClient.Instance.Call <G2C_LoginGate>(rGateSession, new C2G_LoginGate() { Key = key }); Debug.LogError("登陆gate成功!"); Debug.LogError(g2CLoginGate.PlayerId.ToString()); }
public static async ETTask Login(Scene clientScene, string account, string password) { try { // 创建一个ETModel层的Session R2C_Login r2CLogin; Session session = null; try { clientScene.RemoveComponent <RouterAddressComponent>(); // 获取路由跟realmDispatcher地址 RouterAddressComponent routerAddressComponent = clientScene.GetComponent <RouterAddressComponent>(); if (routerAddressComponent == null) { routerAddressComponent = clientScene.AddComponent <RouterAddressComponent, string, int>(ConstValue.RouterHttpHost, ConstValue.RouterHttpPort); await routerAddressComponent.Init(); clientScene.AddComponent <NetKcpComponent, AddressFamily, int>(routerAddressComponent.RouterManagerIPAddress.AddressFamily, CallbackType.SessionStreamDispatcherClientOuter); } IPEndPoint realmAddress = routerAddressComponent.GetRealmAddress(account); session = await RouterHelper.CreateRouterSession(clientScene, realmAddress); { r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = account, Password = password }); } } finally { session?.Dispose(); } // 创建一个gate Session,并且保存到SessionComponent中 Session gateSession = await RouterHelper.CreateRouterSession(clientScene, NetworkHelper.ToIPEndPoint(r2CLogin.Address)); clientScene.AddComponent <SessionComponent>().Session = gateSession; G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call( new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId }); Log.Debug("登陆gate成功!"); await Game.EventSystem.PublishAsync(clientScene, new EventType.LoginFinish()); } catch (Exception e) { Log.Error(e); } }
public static async Task Test2(NetworkSession rSession) { // 设置热更新端的Session HotfixNetworkClient.Instance.Session = rSession; G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await HotfixNetworkClient.Instance.Call(new C2G_LoginGate() { Key = LoginKey }); Debug.LogError("PlayerID: " + g2CLoginGate.PlayerId); }
public static async ETVoid Login(string account, string password) { try { NetworkLoading.Open(true); // 创建一个ETModel层的Session R2C_Login r2CLogin; using (Session session = Game.Scene.GetComponent <NetOuterComponent>().Create("127.0.0.1:10002")) { r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = account, Password = password }); } // 创建一个gate Session,并且保存到SessionComponent中 Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate() { Key = r2CLogin.Key, GateId = r2CLogin.GateId }); Game.Scene.AddComponent <SessionComponent, Session, long>(gateSession, g2CLoginGate.UId); if (g2CLoginGate.Error == ErrorCode.ERR_Success) { OnLoginSuccess(g2CLoginGate); } else { Dialog.Open(new Dialog.Args { Title = "登录", Content = $"登录失败:{g2CLoginGate.Error}" }); } } catch (Exception e) { Dialog.Open(new Dialog.Args { Title = "网络连接", Content = "无法连接网络!" }); } finally { NetworkLoading.Close(); } }
public async void OnLogin() { SessionWrap sessionWrap = null; try { IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address); string text = pname.text; string pass = password.text; Session session = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); sessionWrap = new SessionWrap(session); R2C_Login r2CLogin = (R2C_Login)await sessionWrap.Call(new C2R_Login() { Account = text, Password = pass }); sessionWrap.Dispose(); connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address); Session gateSession = Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); Game.Scene.AddComponent <SessionWrapComponent>().Session = new SessionWrap(gateSession); Game.Scene.AddComponent <SessionComponent>().Session = gateSession; G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionWrapComponent.Instance.Session.Call(new C2G_LoginGate() { Key = r2CLogin.Key }); Log.Info("登陆gate成功!"); uiLogin.SetActive(false); uiLobby.SetActive(true); // 创建Player Player player = ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId); PlayerComponent playerComponent = Game.Scene.GetComponent <PlayerComponent>(); playerComponent.MyPlayer = player; //Game.Scene.GetComponent<UIComponent>().Create(UIType.UILobby); //Game.Scene.GetComponent<UIComponent>().Remove(UIType.UILogin); } catch (Exception e) { sessionWrap?.Dispose(); Log.Error(e); } }
public async void Login() { Session session = null; try { IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint("127.0.0.1:10002"); session = NetworkClient.Instance.Create(connetEndPoint); R2C_Login r2CLogin = (R2C_Login)await session.Call(new C2R_Login() { Account = "Test1", Password = "******" }); Debug.LogError($"R2C_Login: {r2CLogin.Address}"); if (string.IsNullOrEmpty(r2CLogin.Address)) { return; } connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address); gateSession = NetworkClient.Instance.Create(connetEndPoint); G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await gateSession.Call(new C2G_LoginGate() { Key = r2CLogin.Key }); Debug.LogError("登陆gate成功!"); Debug.LogError(g2CLoginGate.PlayerId.ToString()); } catch (Exception e) { Log.Error(e.ToString()); } finally { session?.Dispose(); } }
private async void OnClickLogin() { Debug.Log("Login"); Session session = ETModel.Game.Scene.GetComponent <SessionComponent>().Session; if (session != null) { R2C_Login r2C_Login = (R2C_Login)await session.Call( new C2R_Login() { Account = mInputEmail.text, Password = mInputPass.text } ); session.Dispose(); IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(r2C_Login.Address); Session gateSession = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); ETModel.Game.Scene.GetComponent <ETModel.SessionComponent>().Session = gateSession; G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionComponent.Instance.Session.Call(new C2G_LoginGate() { Key = r2C_Login.Key }); Debug.Log("LoginToGateServer"); Player player = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId); PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>(); playerComponent.MyPlayer = player; Debug.Log(player.Id); Debug.Log(player.UnitId); RoleModel.Instance.OnRevInfo(g2CLoginGate.BaseInfo); PreloadManager.Instance.OnLoginEnterMainScenePreload(() => { SceneManager.Instance.EnterSceneById(1); }); } }
public static async ETVoid Login(LoginViewComponent self, string account, string password) { #region 客户端给服务器发送登陆信息 // 创建一个ETModel层的Session ETModel.Session session = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(GlobalConfigComponent.Instance.GlobalProto.Address); Log.Info("服务器地址 : " + GlobalConfigComponent.Instance.GlobalProto.Address); // 创建一个ETHotfix层的Session, ETHotfix的Session会通过ETModel层的Session发送消息 Session realmSession = ComponentFactory.Create <Session, ETModel.Session>(session); R2C_Login r2CLogin = (R2C_Login)await realmSession.Call(new C2R_Login() { Account = account, Password = password }); realmSession.Dispose(); #endregion if (r2CLogin.Error != ErrorCode.ERR_Success) { SetErrorPrompt(self, Message.Get(r2CLogin.ErrorMessageId)); return; } #region 客户端根据服务器下发的网关地址连接网关 Log.Info("服务器下发的网关地址 : " + r2CLogin.Address); Log.Info("服务器下发的网关验证码 : " + r2CLogin.Key); // 创建一个ETModel层的Session,并且保存到ETModel.SessionComponent中 ETModel.Session gateSession = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(r2CLogin.Address); ETModel.Game.Scene.AddComponent <ETModel.SessionComponent>().Session = gateSession; // 创建一个ETHotfix层的Session, 并且保存到ETHotfix.SessionComponent中 Game.Scene.AddComponent <SessionComponent>().Session = ComponentFactory.Create <Session, ETModel.Session>(gateSession); G2C_LoginGate g2CLoginGate = (G2C_LoginGate)await SessionComponent.Instance.Session.Call(new C2G_LoginGate() { Key = r2CLogin.Key }); Log.Info("登陆gate成功!"); #endregion // 创建Player Player player = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId); PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>(); playerComponent.MyPlayer = player; // 测试消息有成员是class类型 G2C_PlayerInfo g2CPlayerInfo = (G2C_PlayerInfo)await SessionComponent.Instance.Session.Call(new C2G_PlayerInfo()); // 加载Unit资源 ResourcesComponent resourcesComponent = ETModel.Game.Scene.GetComponent <ResourcesComponent>(); // 加载场景资源 await resourcesComponent.LoadBundleAsync("start.unity3d"); // 切换到Battle场景 using (SceneChangeComponent sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync(SceneType.Start); } // 逻辑层不应该去调用UI,逻辑层只关心逻辑并且抛出事件,由UI层自己去订阅事件,而且注意事件名字 // 很多人容易把这个事件取名成LoginFinishiCreateLobbyUI,这是不对的,事件抛出去不可能知道谁订阅了这个事件, // 也不会知道别人订阅这个事件是干什么的,这里只知道我Login Finish //Game.EventSystem.Run(EventIdType.LoginFinish); Game.EventSystem.Run(EventIdType.LoginHasFinish); }
private static void OnLoginSuccess(G2C_LoginGate data) { EventSystem.Instance.Publish(new LoginSuccess()); }