public virtual float OnCauseDamage(AbstractPerson causeDamageTo, BasicDamage damage)
        {
            var realDamage = causeDamageTo.OnTakeDamage(this, damage);

            if (realDamage > 0)
            {
                onCauseDamage?.Invoke(causeDamageTo, Mathf.RoundToInt(realDamage));
            }
            return(realDamage);
//            Debug.Log($"{CharacterName}对{causeDamageTo.CharacterName}造成{realDamage}伤害");
        }
        public virtual float OnTakeDamage(AbstractPerson takeDamageFrom, BasicDamage damage)
        {
            var finalDamage = Mathf.RoundToInt(damage.Damage);

            onTakeDamage?.Invoke(takeDamageFrom, finalDamage);
            Hp -= finalDamage;
//            Debug.Log($"{CharacterName}收到来自{takeDamageFrom.CharacterName}的{finalDamage}伤害,当前血量:{Hp}");

            var realDamage = 0f;

            if (Hp <= 0)
            {
                realDamage = Hp;
//                Debug.Log(CharacterName+"该死!");
                Hp = 0;
                LogicKill();
            }
            else
            {
                realDamage = finalDamage;
            }

            return(realDamage);
        }