public void DestroyALL() { ClearCache(); if (null != m_BloodMap) { foreach (KeyValuePair <int, UBlood> var in m_BloodMap) { UBlood ub = var.Value; if (ub != null) { var temp = ub.gameObject; ub.resNode.DestroyInstanceRes(ref temp); ub.Clear(); } } m_curIndexArry = new Vector2[3]; m_BloodMap.Clear(); } if (null != BossBlood) { var temp = BossBlood.gameObject; BossBlood.resNode.DestroyInstanceRes(ref temp); BossBlood.Clear(); BossBlood = null; CurrentBossBloodHostID = -1; } BossBloodEntityTable.Clear(); BossBloodProityList.Clear(); m_unUseCanvasNodeMap.Clear(); }
/// <summary> /// 更新大血条 /// </summary> private void UpdateBossBlood() { if (null == BossBlood) { return; } JitterBossBlood(); for (int i = 0; i < BossBloodProityList.Count; i++) { EntityView ev = BossBloodProityList[i]; if (null == ev) { continue; } if (!ev.gameObject) { continue; } if (ev.BossBloodShowDistance > 0) { if (bossBloodTarget == null && EntityFactory.MainHero != null) { bossBloodTarget = EntityFactory.MainHero.transform; } float dis = Vector3.SqrMagnitude(bossBloodTarget.position - ev.gameObject.transform.position); if (dis < ev.BossBloodShowDistance * ev.BossBloodShowDistance) { if (ev.CampFlag != SPELL.CampFlag.CampFlag_Friend && ev.CampFlag != SPELL.CampFlag.CampFlag_Self) { EntityEnterBossBloodDistance(ev.ID); } break; } else { EntityLeaveBossBloodDistance(ev.ID); } } } if (null != BossBlood && CurrentBossBloodHostID > 0) { EntityView ev = EntityFactory.getEntityViewByID(CurrentBossBloodHostID); if (ev != null && ev.StateMachine != null) { UpdateBossBloodAndTowerSoldier(ev, ev.StateMachine.GetVisible()); } else { UpdateBossBloodAndTowerSoldier(ev, false); } BossBlood.OnUpdate(); } }
/// <summary> /// 更新BOSS血条 /// </summary> private static void UpdateBossBlood() { if (!EntityFactory.MainHero) { return; } JitterBossBlood(); //检测是否有boss血条进入到显示范围 for (int i = 0; i < BossBloodProityList.Count; i++) { EntityView gv = BossBloodProityList[i]; if (null == gv) { continue; } if (!gv.gameObject) { continue; } if (gv.BossBloodShowDistance > 0) { float dis = Vector3.SqrMagnitude(EntityFactory.MainHero.transform.position - gv.gameObject.transform.position); if (dis < gv.BossBloodShowDistance * gv.BossBloodShowDistance) { if (gv.CampFlag != SPELL.CampFlag.CampFlag_Friend && gv.CampFlag != SPELL.CampFlag.CampFlag_Self ) { EntityEnterBossBloodDistance(gv.ID); } break; } else { EntityLeaveBossBloodDistance(gv.ID); } } } if (null != BossBlood) { BossBlood.OnUpdate(); } }
/// <summary> /// 更新大血条数据 /// </summary> /// <param name="id">实体ID</param> /// <param name="name">实体名称</param> /// <param name="maxValue">最大血量</param> /// <param name="curValue">当前血量</param> /// <param name="tempValue">临时血量</param> private void UpdateBossBloodData(int id, string name, int maxValue, int curValue, int tempValue) { if (null == BossBlood) { return; } if (id != CurrentBossBloodHostID || id < 0) { if (CurrentBossBloodHostID < 0) { UpdateBossBloodAndTowerSoldier(null, false); } return; } BossBlood.SetMaxValue(maxValue); BossBlood.SetCurValue(curValue); BossBlood.SetTempValue(tempValue); BossBlood.SetRoleName(name); }
/// <summary> /// 创建大血条 /// </summary> private void CreateBossBlood() { if (null == BossBlood) { BossBlood = InstanceUBossBlood(); if (null == BossBlood) { Trace.LogError("UGUI -- BossBlood创建失败!"); } else { BloodCanvasNode bcn = new BloodCanvasNode(); BossBlood.Init(null, 0, BloodStyleType.Boss, bcn); BossBlood.SetMaxValue(100); BossBlood.SetCurValue(100); UpdateBossBloodAndTowerSoldier(null, false); BossBlood.SetPositionDirectly_ScreenPoint(OrginalBossBloodPos); } } }
/// <summary> /// 抖动大血条 /// </summary> private void JitterBossBlood() { if (!bBossBloodJitter || null == BossBlood) { return; } JitterTimer += Time.deltaTime; if (JitterTimer > JitterDuration) { bBossBloodJitter = false; JitterTimer = 0.0f; BossBlood.SetPositionDirectly_ScreenPoint(OrginalBossBloodPos); } Vector3 JitterPos = new Vector3(); JitterPos.x = UnityEngine.Random.Range(BossBloodJitterX.x, BossBloodJitterX.y) + OrginalBossBloodPos.x; JitterPos.y = UnityEngine.Random.Range(BossBloodJitterY.x, BossBloodJitterY.y) + OrginalBossBloodPos.y; JitterPos.z = 0; BossBlood.SetPositionDirectly_ScreenPoint(JitterPos); }
private void UpdateBossBloodAndTowerSoldier(EntityView TargetEv, bool bVisible) { if (bVisible) { if (TargetEv != null) { if (BossBlood != null) { BossBlood.SetBossBloodVisible(bVisible); } if (TargetEv.CampFlag == SPELL.CampFlag.CampFlag_Enemy) { if (TargetEv.Property != null && TargetEv.Property.GetNumProp(ENTITY_PROPERTY.PROPERTY_SEX) == (int)MONSTER_TYPE.MONSTER_TYPE_TOWER) { EnterTower(TargetEv); } else { ExitTower(); } } else { ExitTower(); } } } else { if (BossBlood != null) { BossBlood.SetBossBloodVisible(false); } ExitTower(); } }
/// <summary> /// 清除所有的组件 /// </summary> public static void DestroyALL() { if (Movie.GetSingleton <GfxBloodMovie>() == null) { return; } ClearCache(); if (null != m_BloodMap) { foreach (KeyValuePair <int, GfxBlood> var in m_BloodMap) { GfxBlood gba = var.Value; if (GfxBloodMovie.Instance != null) { GfxBloodMovie.Instance.RemoveMovieAS3(gba.Instance); } gba.Clear(); } CurrentColIndex = 0; CurrentRowIndex = 0; UnUsedMovieNodeList.Clear(); m_BloodMap.Clear(); } if (null != BossBlood) { if (GfxDynamicMovie.Instance != null) { GfxDynamicMovie.Instance.RemoveMovieAS3(BossBlood.Instance); } BossBlood.Clear(); BossBlood = null; CurrentBossBlodHostID = -1; } BossBloodEntityTable.Clear(); BossBloodProityList.Clear(); //GFxWarPauseMenu.BoolEvent -= ChangeBloodSetting; }