public void ShowDamageEffect(FightEffectHelp.FightEffectType type, long value, float displayTimeScale, Actor actor, bool show_percent, string push_str) { if (GlobalConst.IsBanshuVersion) { if (type == FightEffectHelp.FightEffectType.AddExp) { return; } } var fightEffectWindow = GetFightEffectWindow(); if (fightEffectWindow == null) { return; } GameObject damageEffectObject = null; damageEffectObject = fightEffectWindow.GetObjectByFightEffectType(type); if (damageEffectObject == null) { return; } int level = FightEffectHelp.GetLayoutLevel(type); fightEffectWindow.SetGameObjectLayoutLevel(damageEffectObject, level); Vector3 worldPosInScene; Vector2 screen_abs_offset; Vector3 worldPos = xc.ui.ugui.UIFightEffectWindow.GetEffectWorldPosInUIByType(actor, type, out worldPosInScene, out screen_abs_offset); damageEffectObject.transform.position = worldPos; damageEffectObject.transform.localPosition = new Vector3(damageEffectObject.transform.localPosition.x, damageEffectObject.transform.localPosition.y, 0); Text effectValueLabel = damageEffectObject.transform.Find("Value").GetComponent <Text>(); if (type == FightEffectHelp.FightEffectType.OurDamage && value > 0) { value = -value; } FightEffectHelp.SetEffectValue(type, effectValueLabel, value, show_percent, push_str); float playTimeBySeconds = 2; Animation animation = damageEffectObject.GetComponentInChildren <Animation>(); if (animation != null && animation.clip != null) { playTimeBySeconds = animation.clip.length; animation[animation.clip.name].speed = displayTimeScale; } damageEffectObject.SetActive(true); var delay_enable = damageEffectObject.GetComponent <DelayEnableComponent>(); delay_enable.DelayTime = playTimeBySeconds; delay_enable.SetEnable = false; delay_enable.Start(); }
/// <summary> /// 显示伤害数字 /// </summary> public void ShowDamageValue(/*Vector3 headPos, */ int damageValue, float displayTimeScale, EUnitType unitType, bool isLocalPlayer, Actor actor, Vector3 attacker_world_pos, FightEffectHelp.FightEffectType type) { if (damageValue <= 0) { return; } var fightEffectWindow = GetFightEffectWindow(); if (fightEffectWindow == null) { return; } GameObject damageEffectObject = null; damageEffectObject = fightEffectWindow.GetObjectByFightEffectType(type); if (damageEffectObject == null) { return; } //damageEffectObject.transform.localScale = Vector3.one * m_normal_damage_num_scale; int level = FightEffectHelp.GetLayoutLevel(type); fightEffectWindow.SetGameObjectLayoutLevel(damageEffectObject, level); Vector3 worldPosInScene; Vector2 screen_abs_offset; Vector3 worldPos = xc.ui.ugui.UIFightEffectWindow.GetEffectWorldPosInUIByType(actor, type, out worldPosInScene, out screen_abs_offset); damageEffectObject.transform.position = worldPos; damageEffectObject.transform.localPosition = new Vector3(damageEffectObject.transform.localPosition.x, damageEffectObject.transform.localPosition.y, 0); if (type == FightEffectHelp.FightEffectType.OneHitKill) { } else { Text effectValueLabel = damageEffectObject.transform.Find("Value").GetComponent <Text>(); if (effectValueLabel != null) { if (isLocalPlayer) { effectValueLabel.text = (-damageValue).ToString(); } else if (type == FightEffectHelp.FightEffectType.OurDamage && damageValue > 0) { effectValueLabel.text = (-damageValue).ToString(); } else { effectValueLabel.text = damageValue.ToString(); } } } damageEffectObject.SetActive(true); float playTimeBySeconds = 2; Animation animation = damageEffectObject.GetComponentInChildren <Animation>(); if (animation != null && animation.clip != null) { playTimeBySeconds = animation.clip.length; animation[animation.clip.name].speed = displayTimeScale; } var delay_enable = damageEffectObject.GetComponent <DelayEnableComponent>(); delay_enable.DelayTime = 2 * displayTimeScale; delay_enable.SetEnable = false; delay_enable.Start(); if (TryShowDamageWordAnim(type)) { UIFightDamageWordAnimComponent anim_component = damageEffectObject.GetComponent <UIFightDamageWordAnimComponent>(); if (anim_component == null) { anim_component = damageEffectObject.AddComponent <UIFightDamageWordAnimComponent>(); } anim_component.Show(displayTimeScale, worldPosInScene, attacker_world_pos, actor.transform.position, type, screen_abs_offset); } }