using UnityEngine; using BaseGames.Core.Save; namespace BaseGames.Progression { /// /// 累计钉击碰撞(NailClash)次数的成就条件。 /// 使用 Stats.SkillUseCounts["NailClash"] 追踪(由 CombatSystem 写入)。 /// [CreateAssetMenu(menuName = "Achievement/Condition/NailClashCount", fileName = "COND_NailClashCount_")] public class NailClashCountCondition : AchievementCondition { public const string NailClashKey = "NailClash"; [Tooltip("需要累计触发钉击碰撞的次数")] [Min(1)] public int requiredCount = 5; public override bool IsMet(SaveData save) { if (save?.Stats?.SkillUseCounts == null) return false; save.Stats.SkillUseCounts.TryGetValue(NailClashKey, out int count); return count >= requiredCount; } public override float GetProgress(SaveData save) { if (save?.Stats?.SkillUseCounts == null || requiredCount <= 0) return 0f; save.Stats.SkillUseCounts.TryGetValue(NailClashKey, out int count); return UnityEngine.Mathf.Clamp01((float)count / requiredCount); } } }