public async void OnLogin() { try { IPEndPoint connetEndPoint = NetworkHelper.ToIPEndPoint(GlobalConfigComponent.Instance.GlobalProto.Address); string text = this.account.GetComponent <InputField>().text; // 创建一个ETModel层的Session ETModel.Session session = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); // 创建一个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 = text, Password = "******" }); realmSession.Dispose(); connetEndPoint = NetworkHelper.ToIPEndPoint(r2CLogin.Address); // 创建一个ETModel层的Session,并且保存到ETModel.SessionComponent中 ETModel.Session gateSession = ETModel.Game.Scene.GetComponent <NetOuterComponent>().Create(connetEndPoint); 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 }); UserInfo userInfor = (UserInfo)await SessionComponent.Instance.Session.Call(new UserInfor() { }); //加载心跳组件 Game.Scene.GetComponent <SessionComponent>().Session.AddComponent <HeartBeatComponent>(); Log.Info("登陆gate成功!"); Log.Info("请求信息gate成功!" + " COIN:" + userInfor.Coin + " EXP:" + userInfor.Exp); // 创建Player Player player = ETModel.ComponentFactory.CreateWithId <Player>(g2CLoginGate.PlayerId); PlayerComponent playerComponent = ETModel.Game.Scene.GetComponent <PlayerComponent>(); playerComponent.MyPlayer = player; playerComponent.Add(player); //Log.Info("Login Player.Unitid"+ player.UnitId.ToString()); //Log.Info("Login Player.id" + player.Id.ToString()); Game.Scene.GetComponent <UIComponent>().Create(UIType.EvoUILobby); Game.Scene.GetComponent <UIComponent>().Remove(UIType.UILogin); } catch (Exception e) { Log.Error(e); } }
public static Player Create(long id) { ResourcesComponent resourcesComponent = ETModel.Game.Scene.GetComponent <ResourcesComponent>(); GameObject bundleGameObject = (GameObject)resourcesComponent.GetAsset("Player.unity3d", "Player"); GameObject prefab = bundleGameObject.Get <GameObject>("Cube"); GameObject go = UnityEngine.Object.Instantiate(prefab); Player player = ComponentFactory.CreateWithId <Player>(id, go); PlayerComponent playerComponent = Game.Scene.GetComponent <PlayerComponent>(); player.AddComponent <MoveComponent>(); player.AddComponent <TurnComponent>(); playerComponent.Add(player); return(player); }
/// <summary> /// 先向 BD 服务器 初始化小怪数据 /// </summary> public static async ETTask <List <Player> > GetPlayerByIds(this PlayerComponent self, List <long> ids) { DBProxyComponent dBProxy = Game.Scene.GetComponent <DBProxyComponent>(); List <ComponentWithId> playerdbs = await dBProxy.Query <Playerdb>(ids); foreach (Playerdb tem in playerdbs) { Player player = tem.ToPlayer(); /// 然后向 DB 服务器 小怪数据放入字典 self.Add(player); } Console.WriteLine(" PlayerComponentHelper-28: " + " BD服务器,Player数量: " + Game.Scene.GetComponent <PlayerComponent>().Count); return(self.GetAll().ToList()); }