public override void Execute(AbstractPerson ap)
        {
            //            Debug.Log(ap.obj.GetInstanceID()+": "+ap.IsConst);
            //如果不可选定(硬直),告辞
            //数值
            //            Debug.Log( ap.name + "收到" + this.damage + "伤害");

            //   BloodChange


            if (!ap.IsConst)
            {
                ap.TakeBattleEffect(new DamageNumberEffect(this.damage, 0.3f * ap.Scanler, Color.red, this.dir, 1f, UnityEngine.Random.Range(10, 60)));
            }


            CEventCenter.BroadMessage(Message.M_BloodChange(ap.obj), -this.damage);
            ap.OnTakeDamage(this.damage);
            if (!(ap is Player))
            {
//                Debug.Log(Message.M_ChangeSmallLevel + " " + this.damage);
                CEventCenter.BroadMessage(Message.M_ChangeSmallLevel, this.damage);
            }
            this.Release(ap);
        }
        public static void CauseDamageTo(this AbstractPerson attacker, AbstractPerson receiver)
        {
            Assert.IsTrue(attacker != null && receiver != null);
            if (receiver.IsConst)
            {
                return;
            }


            var damage = GameMath.Damage(attacker, receiver);

            //伤害数字
            new NumberTipUI(damage, 0.3f * receiver.Scanler, 24, Color.red, receiver.obj.transform, receiver.Dir, 1);

            CEventCenter.BroadMessage(Message.M_BloodChange(receiver.obj), -damage);
            receiver.OnTakeDamage(damage);
            if (!(receiver is Player))
            {
                CEventCenter.BroadMessage(Message.M_ChangeSmallLevel, damage);
            }
        }