编辑代码

using System;

[System.Serializable] //可序列化, 可以把常规的C# 类嵌入到脚本里
public class AnimationParam
{
    public string run = "run";
    public string death = "death";
    public string idle = "idle";
    public string attack01 = "attack01";
    public string attack02 = "attack02";
    public string attack03 = "attack03";
    public string walk = "walk";

}



public class CharacterStatus: MonoBehaviour
{
    // 血量,受伤,死亡
    [Tooltip("动画参数")]public AnimationParam animationParam;
    [Tooltip("血量")]public float HP;
    [Tooltip("最大血量")]public float maxHP;
    [Tooltip("法力")]public float SP;
    [Tooltip("最大法力")]public float maxSP;
    [Tooltip("基础攻击力")]public float baseATK;
    [Tooltip("防御力")]public float defence;
    [Tooltip("攻击间隔")]public float attackInterval;
    [Tooltip("攻击距离")]public float attackDistance;

    public void Damage(float val)
    {
        val -= defence;
        if(val <= 0) return;
        HP -= val
        if(HP <= 0) Death();
    }

    // 调用父类死亡方法,执行子类死亡方法
    protected virtual void Death()
    {
        GetComponent<Animator>().SetBool(animationParam.death, true);
    }
}

public class PlayerStatus : CharacterStatus
{
    public override void Damage(float val)
    {

    }

    public override void Death()
    {

    }
}

public class EnemyStatus: CharacterStatus
{

    public override void Damage(float val)
    {

    }

    public override void Death()
    {

    }  
}