using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 玩家技能系统(召唤师技能) /// 依据 PlayerData 中 equippedSummonerSkills 动态初始化图标与释放相匹配的技能效果 /// public class PlayerSkillSystem : MonoBehaviour { public static PlayerSkillSystem Instance { get; private set; } [Header("战术增益加成倍率")] public float cooldownMultiplier = 1f; // 冷却缩减倍率 public float powerMultiplier = 1f; // 威力加成倍率 [Header("技能1组件绑定")] public Button skill1Button; public Image skill1CooldownMask; public Text skill1CooldownText; public string skill1CurrentName = "神圣赞歌"; public float skill1Cooldown = 25f; private float skill1RemainingCooldown = 0f; [Header("技能2组件绑定")] public Button skill2Button; public Image skill2CooldownMask; public Text skill2CooldownText; public string skill2CurrentName = "天雷狂轰"; public float skill2Cooldown = 20f; private float skill2RemainingCooldown = 0f; [Header("通用特效预制体引用")] public GameObject cureBallPrefab; // 飞球预制体 (Assets/Prefabs/特效/飞球/cureBall.prefab) public GameObject healNovaPrefab; // 治疗冲击波 (Assets/TJGeneratorLibEffects/Prefabs/Interactive/Healing/HealNova.prefab) public GameObject lightningStrikePrefab; // 落雷击中 (Assets/TJGeneratorLibEffects/Prefabs/Combat/Explosions/LightningExplosion/LightningExplosionBlue.prefab) public GameObject lightningNovaPrefab; // 雷暴全屏光环 (Assets/TJGeneratorLibEffects/Prefabs/Combat/Nova/Lightning/NovaLightningBlue.prefab) public Transform castStartTransform; // 施法起始点 private void Awake() { Instance = this; } private void Start() { EnsureSkillUIReferences(); LoadEquippedSkillIcons(); if (skill1Button != null) { skill1Button.onClick.RemoveAllListeners(); skill1Button.onClick.AddListener(UseSkill1); } if (skill2Button != null) { skill2Button.onClick.RemoveAllListeners(); skill2Button.onClick.AddListener(UseSkill2); } } private void EnsureSkillUIReferences() { var canvas = GameObject.Find("TowerDefenseCanvas"); if (canvas == null) return; var skillsPanel = canvas.transform.Find("BottomUI/SkillsPanel"); if (skillsPanel == null) return; if (skillsPanel.childCount > 0) { var item1 = skillsPanel.GetChild(0); if (skill1Button == null) { skill1Button = item1.GetComponent