using System.Collections; using System.Collections.Generic; using UnityEngine; /// /// 属性实例 /// public class AttributeInstance { /// 属性名称 public string name; /// 基础值 public float baseValue; /// 当前值 public float currentValue; /// 附加值% public float additionValue; /// 最小值 public float minValue; /// 最大值 public float maxValue = float.MaxValue; /// 属性类型 public AttributeType type; /// 修改器列表 public List modifiers = new List(); /// 添加修改器 public void AddModifier(AttributeModifier mod, bool isUpdate) { modifiers.Add(mod); if (isUpdate) { RecalculateValue(); } } /// 添加修改器 public void AddModifier(List mods, bool isUpdate) { modifiers.AddRange(mods); if (isUpdate) { RecalculateValue(); } } /// 重新计算值 public void RecalculateValue() { currentValue = baseValue; modifiers.ForEach(mod => currentValue = mod.Fixed(currentValue)); additionValue = 1; modifiers.ForEach(mod => additionValue = mod.Addition(additionValue)); currentValue = currentValue * additionValue; currentValue = Mathf.Clamp(currentValue, minValue, maxValue); } }