Unity如何实现伤害类型和防御类型间的伤害系数判断?

想做一个伤害判定系统。比如一个敌人是水属性防御,玩家的火属性攻击只对敌人造成75%的伤害,但土属性攻击就会造成125%伤害,就是每个伤害属性对不同防御属性造成的伤害系数不同。
我知道大概的制作流程,但不知道具体如何实现,所有的疑问都写在代码里了。

public class damage : MonoBehaviour
{
    public enum damageType { MENTAL, NATURE, WATER, HIRE, GROUND }
    public damageType type; //伤害类型
    private Enemy damageTarget; //伤害目标
    public float damagepoint; //伤害值

    public damage(int type, float point)
    //通过new实例化伤害类型造成伤害?
    {
        this.type = (damageType)type;
        damagepoint = point;
        TakeDamage();
    }
   
    void TakeDamage()
    { 
        //调用伤害目标的组件对其造成伤害
        damageTarget = damageTarget.GetComponent<Enemy>();
        damageTarget.GetDamage(传入伤害类型?, damagepoint);
    }
}
public class defence : MonoBehaviour
{
    public enum defenceType { MENTAL, NATURE, WATER, HIRE, GROUND } //所有防御类型
    private defenceType Type;
    public damageType(damage类里的属性怎么给敌人的防御类型赋值?);
    // Start is called before the first frame update

    // Update is called once per frame
    public float  CalculateDamage()
    {
        字典如何实现,该写在哪里(哪个文件,或者新写一个文件?如何调用此字典?)?
        float damageCoefficient = Dictionary<(伤害类型,防御类型), 伤害系数>;
        return (float)damageCoefficient;
    }
}
public class Enemy : MonoBehaviour
{
    public float hp;
    public defence armor;
    armor.Type = ??;
    //如何添加一个防御类型?

    public void GetDamage(传入伤害类型,float damagePoint)
    {
        hp -=  damagePoint * 伤害系数 armor.CalculateDamage(传入伤害类型);
    }
}

虽然我不懂这个,但是我知道一件事情,判断,打出的伤害可以做一个标记,火为1,水为2这样的,到时候用switch语句去判断这个攻击的属性相乘就行了

建议单独设一个枚举,由枚举值判断伤害类型