public static async ETVoid EnterMapAsync(string sceneName) { try { // 加载Unit资源 ResourcesComponent resourcesComponent = DCET.Model.Game.Scene.GetComponent <ResourcesComponent>(); await resourcesComponent.LoadBundleAsync($"unit.unity3d"); // 加载场景资源 await DCET.Model.Game.Scene.GetComponent <ResourcesComponent>().LoadBundleAsync("map.unity3d"); // 切换到map场景 using (SceneChangeComponent sceneChangeComponent = DCET.Model.Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync(sceneName); } G2C_EnterMap g2CEnterMap = await DCET.Model.SessionComponent.Instance.Session.Call(new C2G_EnterMap()) as G2C_EnterMap; PlayerComponent.Instance.MyPlayer.UnitId = g2CEnterMap.UnitId; Game.Scene.AddComponent <OperaComponent>(); Game.EventSystem.Run(EventIdType.EnterMapFinish); } catch (Exception e) { Log.Error(e); } }
protected override async ETTask Run(EventType.SceneChangeStart args) { Scene currentScene = args.ZoneScene.CurrentScene(); // 加载场景资源 await ResourcesComponent.Instance.LoadBundleAsync($"{currentScene.Name}.unity3d"); // 切换到map场景 SceneChangeComponent sceneChangeComponent = null; try { sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>(); { await sceneChangeComponent.ChangeSceneAsync(currentScene.Name); } } finally { sceneChangeComponent?.Dispose(); } currentScene.AddComponent <OperaComponent>(); }
protected override async ETTask Run(EventType.SceneChangeStart args) { await ETTask.CompletedTask; Scene zoneScene = args.ZoneScene; // 加载场景资源 await ResourcesComponent.Instance.LoadBundleAsync("map.unity3d"); // 切换到map场景 SceneChangeComponent sceneChangeComponent = null; try { sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>(); { await sceneChangeComponent.ChangeSceneAsync("Map"); } } finally { sceneChangeComponent?.Dispose(); } args.ZoneScene.AddComponent <OperaComponent>(); }
protected override async ETTask Run(EventType.EnterMapFinish args) { // 加载场景资源 await ResourcesComponent.Instance.LoadBundleAsync("map.unity3d"); // 切换到map场景 SceneChangeComponent sceneChangeComponent = null; try { sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>(); { await sceneChangeComponent.ChangeSceneAsync("Map"); } } finally { sceneChangeComponent?.Dispose(); } args.ZoneScene.AddComponent <OperaComponent>(); await UIHelper.Remove(args.ZoneScene, UIType.UILobby); }
/// <summary> /// 进入地图 /// </summary> /// <returns></returns> public static async ETVoid EnterMapAsync(int MapSizeX, int MapSizeY) { try { // 加载Unit资源 ResourcesComponent resourcesComponent = ETModel.Game.Scene.GetComponent <ResourcesComponent>(); await resourcesComponent.LoadBundleAsync($"unit.unity3d"); // 加载场景资源 await ETModel.Game.Scene.GetComponent <ResourcesComponent>().LoadBundleAsync("etdemomap.unity3d"); // 切换到map场景 using (SceneChangeComponent sceneChangeComponent = ETModel.Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync("ETDemoMap"); } Game.Scene.AddComponent <MapGridOperaComponent>(); Game.EventSystem.Run(ETDemoEventIdType.EnterMapFinish, MapSizeX, MapSizeY); } catch (Exception e) { Log.Error(e); } }
public void Async() { SceneChangeComponent sceneChange = Game.Scene.GetComponent <SceneChangeComponent>(); if (sceneChange == null) { return; } process.text = $"{sceneChange.Process}%"; }
protected override async ETTask Run(AppEventType.EnterSceneStart args) { // 加载场景AssetBundle await ResourcesComponent.Instance.LoadBundleAsync("map.unity3d"); // 切换到map场景 SceneChangeComponent sceneChangeComponent = args.ZoneScene.GetComponent <SceneChangeComponent>(); await sceneChangeComponent.ChangeSceneAsync(args.SceneName); ResourcesComponent.Instance.UnloadBundle("map.unity3d"); }
public override async ETTask Run(EventType.EnterMapFinish args) { // 加载场景资源 await Game.Scene.GetComponent <ResourcesComponent>().LoadBundleAsync("map.unity3d"); // 切换到map场景 using (SceneChangeComponent sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync("Map"); } Game.Scene.Get(1).AddComponent <OperaComponent>(); await UIHelper.Remove(args.ZoneScene, UIType.UILobby); }
protected override async ETTask Run(EventType.EnterMapFinish args) { // 加载场景资源 await ResourcesComponent.Instance.LoadBundleAsync("map.unity3d"); // 切换到map场景 using (SceneChangeComponent sceneChangeComponent = Game.Scene.AddComponent <SceneChangeComponent>()) { await sceneChangeComponent.ChangeSceneAsync("Map"); } args.ZoneScene.AddComponent <OperaComponent>(); args.ZoneScene.GetComponent <FGUIComponent>().Remove(FGUILobby.UIResName); }
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); }