public async void Run() { Game.Scene.AddComponent <MessageDispatherComponent, AppType>(AppType.Client); ClientConfig clientConfig = Game.Scene.AddComponent <ClientConfigComponent>().Config; NetworkComponent networkComponent = Game.Scene.AddComponent <NetOuterComponent>(); Session session = networkComponent.Get(clientConfig.Address); try { R2C_Login s2CLogin = await session.Call <C2R_Login, R2C_Login>(new C2R_Login { Account = "abcdef", Password = "******" }); networkComponent.Remove(session.Id); // 连接Gate Log.Debug(MongoHelper.ToJson(s2CLogin)); Session gateSession = networkComponent.Get(s2CLogin.Address); await gateSession.Call <C2G_LoginGate, G2C_LoginGate>(new C2G_LoginGate(s2CLogin.Key)); Log.Info("连接Gate验证成功!"); } catch (RpcException e) { Log.Error(e.ToString()); } catch (Exception e) { Log.Error(e.ToString()); } }
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 <string> Test1(Session rSession) { R2C_Login r2CLogin = await NetworkClient.Instance.Call <R2C_Login>(rSession, new C2R_Login() { Account = "Test1", Password = "******" }); Debug.LogError($"R2C_Login: {r2CLogin.Address}"); address = r2CLogin.Address; key = r2CLogin.Key; return(r2CLogin.Address); }
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 static async Task <string> Test1(NetworkSession rSession) { var rTest2 = new HotfixNetworkTest2(); await rTest2.Initialize(); EventManager.Instance.Distribute(GameEvent.EVENT_TEST_1, "hahahahahaha..."); // 设置热更新端的Session HotfixNetworkClient.Instance.Session = rSession; // Login R2C_Login r2CLogin = (R2C_Login)await HotfixNetworkClient.Instance.Call(new C2R_Login() { Account = "WinddyHe", Password = "******" }); Debug.LogError("Address: " + r2CLogin.Address); LoginKey = r2CLogin.Key; return(r2CLogin.Address); }
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); }