/// <summary> /// 处理加载事件 /// </summary> /// <param name="msg"></param> public override void ProcessEvent(MsgBase msg) { switch (msg.MsgId) { case (ushort)AssetLoadEvent.LoadRequest: //请求资源 MsgAssetLoadRequest msgLoadReq = msg as MsgAssetLoadRequest; Object obj = MgrCenter.AssetMgr.LoadAsset(msgLoadReq.bundleName, msgLoadReq.assetName); //说明已经加载完成了,就直接返回给请求者 if (obj != null) { MgrCenter.Instance.SendMsg(Msgs.GetMsgAssetLoaded( (ushort)AssetLoadEvent.AssetLoaded, msgLoadReq.bundleName, msgLoadReq.assetName, obj)); } break; case (ushort)AssetLoadEvent.AssetLoaded: //资源加载完成后的处理 MsgAssetLoaded msgAssetLoaded = msg as MsgAssetLoaded; OnObjLoaded(msgAssetLoaded.GetAssetAndABName(), msgAssetLoaded.asset); break; case (ushort)AssetLoadEvent.UnloadSingleAsset: break; case (ushort)AssetLoadEvent.UnloadBundleAsset: break; case (ushort)AssetLoadEvent.UnloadSceneAsset: break; case (ushort)AssetLoadEvent.UnloadBundles: //卸载所有bundle MsgUnloadAssetBundles msgUnloadAssetBundles = msg as MsgUnloadAssetBundles; LoadMgr.Instance.UnloadAssetBundles(msgUnloadAssetBundles.bundleNames, msgUnloadAssetBundles.ifUnloadObjs); break; case (ushort)AssetLoadEvent.UnloadSingleBundle: break; case (ushort)AssetLoadEvent.UnloadSceneBundle: break; case (ushort)AssetLoadEvent.UnloadAllBundle: break; } }
/// <summary> /// 处理消息 /// </summary> /// <param name="msg"></param> public override void ProcessEvent(MsgBase msg) { switch (msg.MsgId) { case (ushort)EntityEnum.CreateEntity: //创建entity MsgNPCCreate msgNPCCreate = msg as MsgNPCCreate; LoadEntity(msgNPCCreate.npcInstance, msgNPCCreate.isHost); break; case (ushort)EntityEnum.CreateBuilding: //创建建筑 MsgBuildingCreate msgBuildingCreate = msg as MsgBuildingCreate; LoadBuilding(msgBuildingCreate.buildingCreateDTO, msgBuildingCreate.isHost); break; case (ushort)AssetLoadEvent.AssetLoaded: //资源加载完成,实例化entity MsgAssetLoaded msgAssetLoaded = msg as MsgAssetLoaded; string name = new StringBuilder(msgAssetLoaded.bundleName).Append(" ").Append(msgAssetLoaded.assetName).ToString(); InstantiateEntity(name, msgAssetLoaded.asset); break; } }
private int selectedHeroId = -1;//已选择的英雄Id /// <summary> /// 处理消息 /// </summary> /// <param name="msg"></param> public override void ProcessEvent(MsgBase msg) { switch (msg.MsgId) { case (ushort)NetEventSelect.EnterSres: //服务器允许进入选择 MsgSelectRoom msgSelectRoom = msg as MsgSelectRoom; Debug.LogWarning("enter sres"); if (msgSelectRoom.selectRoom != null) { this.selectRoom = msgSelectRoom.selectRoom; SetPlayers(this.selectRoom); } InitialSelectHeroGrids(); break; case (ushort)AssetLoadEvent.AssetLoaded: //图片加载完成 MsgAssetLoaded msgAssetLoaded = msg as MsgAssetLoaded; string assetIndex = msgAssetLoaded.assetName.Split('_')[0]; int index = int.Parse(assetIndex); Texture2D texture = msgAssetLoaded.asset as Texture2D; Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f)); OnSpriteLoaded(index, sprite); break; case (ushort)NetEventSelect.SomeOneEntered: //有玩家进入了 MsgInt msgInt = msg as MsgInt; UpdatePlayerInfoOnEnter(msgInt.Int, true); break; case (ushort)SelectUIEvent.HeroPressed: //按下了某个英雄 MsgInt msgIndex = msg as MsgInt; selectedHeroId = msgIndex.Int; heroSelectGridBox.UIOnSomeHeroSelected(msgIndex.Int); break; case (ushort)NetEventSelect.SomeOneSelected: //某人选择了英雄 MsgSelectDTO msgSelectDTO = msg as MsgSelectDTO; SelectDTO selectDTO = msgSelectDTO.SelectData; if (selectDTO != null) { UpdatePlayerHero(selectDTO.userId, selectDTO.heroId); } if (TeamId(selectDTO.userId) == this.teamId) { UpdateHeroCouldSelect(selectDTO); } break; case (ushort)NetEventSelect.SomeOneReady: //有人准备了 MsgSelectDTO msgSelect = msg as MsgSelectDTO; SelectDTO select = msgSelect.SelectData; UpdatePlayerReady(select.userId, select.isReady); break; } }
/// <summary> /// 消息处理 /// </summary> /// <param name="msg"></param> public override void ProcessEvent(MsgBase msg) { switch (msg.MsgId) { case (ushort)AssetLoadEvent.AssetLoaded: //HUD prefab加载完成后,创建HUD MsgAssetLoaded msgAssetLoaded = msg as MsgAssetLoaded; if (msgAssetLoaded.bundleName == hudAssetABName && msgAssetLoaded.assetName == hudAssetName) { this.hudAsset = msgAssetLoaded.asset; foreach (HUDInfo hudInfo in loadHUDDic.Values) { CreateHUD(hudAsset, hudInfo.id, hudInfo.name, hudInfo.percent, hudInfo.pos); } loadHUDDic.Clear(); } break; case (ushort)HUDEvent.CreateHUD: MsgHUD msgHUD = msg as MsgHUD; if (hudAsset == null) { if (loadHUDDic.Count == 0) { SendMsg(Msgs.GetMsgAssetLoadRequest((ushort)AssetLoadEvent.LoadRequest, hudAssetABName, hudAssetName)); } if (!loadHUDDic.ContainsKey(msgHUD.Id)) { loadHUDDic.Add(msgHUD.Id, new HUDInfo(msgHUD.Name, msgHUD.Id, msgHUD.Percent, msgHUD.Pos)); } } else { CreateHUD(hudAsset, msgHUD.Id, msgHUD.Name, msgHUD.Percent, msgHUD.Pos); } break; case (ushort)HUDEvent.DestroyHUD: //销毁HUD MsgInt msgInt = msg as MsgInt; UnRegisterHUD(msgInt.Int); break; case (ushort)HUDEvent.HideHUD: MsgInt msgI = msg as MsgInt; HideHUD(msgI.Int); break; case (ushort)HUDEvent.UpdateHUDPos: //更新HUD的位置 MsgKV <int, Vector3> msgPos = msg as MsgKV <int, Vector3>; if (hudDic.ContainsKey(msgPos.msgKey)) { UpdateHUDPos(msgPos.msgValue, hudDic[msgPos.msgKey]); } break; case (ushort)HUDEvent.UpdateHUDHp: //更新HUD的hp信息 MsgKV <int, float> msgHp = msg as MsgKV <int, float>; if (hudDic.ContainsKey(msgHp.msgKey)) { hudDic[msgHp.msgKey].UpdateHpBar(msgHp.msgValue); } break; } }