/// <summary> /// 工厂+依赖反转(类似面向接口编程,当然这里采用的是父类) /// 原理:控制反转:Inversion of Control,IoC,其中这里用到了 依赖注入(构造函数注入):Dependency injection, DI /// 作用:高内聚,低耦合 /// </summary> public static SkillBase Create(eSkillType type, VSkillBase vSkill) { SkillBase obj = null; switch (type) { case eSkillType.None: obj = new SkillBase(m_uid, vSkill); break; case eSkillType.Near: obj = new SkillNear(m_uid, vSkill); break; case eSkillType.Jump: obj = new SkillJump(m_uid, vSkill); break; case eSkillType.Down_Up: obj = new SkillDownUp(m_uid, vSkill); break; } Add(m_uid++, obj); return(obj); }
/// <summary> /// 按下开枪被打斯时调用 /// </summary> public void DestoryDownUpSkill() { SkillBase dSkill = CSkillMgr.GetDownUpSkill(GetUid()); if (dSkill != null) { if (dSkill.m_skillInfo.skillType == (int)eSkillType.Down_Up) { //UpdateUI_ResetDownUp(); SkillDownUp dp = dSkill as SkillDownUp; dp.OnUp(); } } }
public void EnterSkill() { CSkillInfo sInfo = GetSkillByIndex(m_cmdFspSendSkill.m_skillIndex); if (sInfo == null) { return; } // 如果存在引导技能,则不再创建 SkillBase dSkill = CSkillMgr.GetDownUpSkill(GetUid()); if (dSkill != null) { if (sInfo.m_skillInfo.skillType == (int)eSkillType.Down_Up) { SkillDownUp dp = dSkill as SkillDownUp; dp.SetCmd(m_cmdFspSendSkill); } return; } if (!m_logicSkillEnabled) { return; } //Debug.Log("技能流程:使用技能:" + sInfo.m_skillInfo.id + " "+ sInfo.m_skillInfo.name); if (!sInfo.IsCanUse()) { return; } //Debug.Log("CD 正常进入技能:" + m_cmdFspSendSkill.m_skillIndex + " " + sInfo.m_skillDataInfo.name); SkillCsvData m_skillInfo = sInfo.m_skillInfo; StartSkill(m_skillInfo); sInfo.GetMainSkill().OnUseSkill(); }