public bool UseSkill <T>(T targetScript, KeyCode key, Hashtable arg = null) where T : MonoBehaviour, ISkillManager { int index = (int)key - 49; if (index < 0 || index >= skillBar.Length) { return(false); } if (skills.TryGetValue(skillBar[index], out Type type)) { ISkillManager interfac = targetScript as ISkillManager; GameObject go = (targetScript as MonoBehaviour).gameObject; Skill.Skill curSkill = interfac.GetCurSkill(); if (curSkill != null) { if (curSkill.GetType() == type) { return(false); } curSkill.SkillRemove(); UnityEngine.Object.Destroy(go.GetComponent(curSkill.GetType())); } Skill.Skill skill = go.AddComponent(type) as Skill.Skill; skill.SkillInit(arg); interfac.SetSkill(skill); return(true); } return(false); }
public static IList <Buff> GetBuffs( Skill.Skill skill, SkillBuffSheet skillBuffSheet, BuffSheet buffSheet) { var buffs = new List <Buff>(); if (!skillBuffSheet.TryGetValue(skill.SkillRow.Id, out var skillBuffRow)) { return(buffs); } foreach (var buffId in skillBuffRow.BuffIds) { if (!buffSheet.TryGetValue(buffId, out var buffRow)) { continue; } buffs.Add(Get(buffRow)); } return(buffs); }