This commit is contained in:
MuHua-123
2025-09-29 17:58:53 +08:00
parent 153e254d33
commit a18bea561a
180 changed files with 1325 additions and 189 deletions
@@ -0,0 +1,45 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 属性实例
/// </summary>
public class AttributeInstance {
/// <summary> 属性名称 </summary>
public string name;
/// <summary> 基础值 </summary>
public float baseValue;
/// <summary> 当前值 </summary>
public float currentValue;
/// <summary> 附加值% </summary>
public float additionValue;
/// <summary> 最小值 </summary>
public float minValue;
/// <summary> 最大值 </summary>
public float maxValue = float.MaxValue;
/// <summary> 属性类型 </summary>
public AttributeType type;
/// <summary> 修改器列表 </summary>
public List<AttributeModifier> modifiers = new List<AttributeModifier>();
/// <summary> 添加修改器 </summary>
public void AddModifier(AttributeModifier mod, bool isUpdate) {
modifiers.Add(mod);
if (isUpdate) { RecalculateValue(); }
}
/// <summary> 添加修改器 </summary>
public void AddModifier(List<AttributeModifier> mods, bool isUpdate) {
modifiers.AddRange(mods);
if (isUpdate) { RecalculateValue(); }
}
/// <summary> 重新计算值 </summary>
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);
}
}