public ActiveSkill additionalActiveSkill; // 附加的主动技能 public override void Execute(CharacterMono speller, CharacterMono target) { base.Execute(speller, target); if (additionalActiveSkill.IsMustDesignation) { additionalActiveSkill.Execute(speller, target); } else { additionalActiveSkill.Execute(speller, target.transform.position); } }
public void ExecuteSkill() { if (ActiveSkill != null) { ActiveSkill.Execute(); ActiveSkill = null; } }
/// <summary> /// 用于处理SpellSkill协议 /// </summary> /// <param name="protocol"></param> public void TreateSpellSkillProtocol(ProtocolBytes protocol) { // 释放技能的单位的ID string userName = protocol.GetString(); // 不处理本地玩家的SpellSkill协议 if (userName == NetWorkManager.Instance.NowPlayerID) { return; } if (userName.Contains("NPC#") && IsHomeowner) { return; } //Debug.Log("处理SpellSkill协议"); // 要释放的技能的ID int skillId = protocol.GetInt(); // 要释放的技能的等级 int skillLevel = protocol.GetInt(); // 技能目标 string skillTarget = protocol.GetString(); ActiveSkill skill = TestDatabase.Instance.baseSkills[skillId] as ActiveSkill; if (skillTarget == "Position") { float x = protocol.GetFloat(); float y = protocol.GetFloat(); float z = protocol.GetFloat(); skill.Execute(NetWorkManager.Instance.networkPlayers[userName].GetComponent <CharacterMono>(), new Vector3(x, y, z)); } else { string targetId = protocol.GetString(); skill.Execute(NetWorkManager.Instance.networkPlayers[userName].GetComponent <CharacterMono>(), NetWorkManager.Instance.networkPlayers[targetId].GetComponent <CharacterMono>()); } }