Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考
此代码仅为较上一P有所改变的代码
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili
CharacterStats.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class CharacterStats : MonoBehaviour
{[Header("Major stats")]public Stat strength; // 力量 增伤1点 临界值power 1% 物抗public Stat agility;// 敏捷 闪避 1% 临界chance 1%public Stat intelgence;// 1 点 魔法伤害 1点魔抗 public Stat vitality;//加血的[Header("Defensive stats")]public Stat maxHealth;public Stat armor;public Stat evasion;//闪避值public Stat damage;[SerializeField]private int currentHealth;protected virtual void Start(){currentHealth = maxHealth.GetValue(); }public virtual void DoDamage(CharacterStats _targetStats){if (TargetCanAvoidAttack(_targetStats)){return;}int totleDamage = damage.GetValue() + strength.GetValue();totleDamage = CheckTargetArmor(_targetStats, totleDamage);_targetStats.TakeDamage(totleDamage);}private static int CheckTargetArmor(CharacterStats _targetStats, int totleDamage){totleDamage -= _targetStats.armor.GetValue();totleDamage = Mathf.Clamp(totleDamage, 0, int.MaxValue);return totleDamage;}private bool TargetCanAvoidAttack(CharacterStats _targetStats)//设置闪避{int totleEvation = _targetStats.evasion.GetValue() + _targetStats.agility.GetValue();if (Random.Range(0, 100) < totleEvation){return true;}return false;}protected virtual void TakeDamage(int _damage){currentHealth -= _damage;Debug.Log(_damage);if (currentHealth < 0)Die();}protected virtual void Die(){}
}