/// <summary> /// 技能按键相应 /// </summary> /// <param name="obj"></param> private void OnHotkey(IComponentEvent obj) { //战斗状态||过载模式 才响应 if (m_ISpacecraftSkillProperty.GetCurrentState().GetMainState() == EnumMainState.Fight || m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Overload)) { SkillCastEvent skillCastEvent = obj as SkillCastEvent; if (m_ISpacecraftSkillProperty.GetCurrentState().IsHasSubState(EnumSubState.Peerless) && !skillCastEvent.IsWeaponSkill) //转化炉模式只允许释放武器技能 { return; } int skillId = 0; if (skillCastEvent.IsWeaponSkill) { skillId = skillCastEvent.SkillIndex; //非武器 表示第几个技能,武器则表示技能ID } else { PlayerShipSkillVO skillVO = null; skillVO = m_PlayerSkillProxy.GetShipSkillByIndex(skillCastEvent.SkillIndex); //由第几个技能,获取技能VO if (skillVO == null) { return; } skillId = skillVO.GetID(); } Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} , 按下 = {1}", skillId, skillCastEvent.KeyPressed)); //按下 if (skillCastEvent.KeyPressed) { //是否可释放 if (!CanReleaseSkill(skillId)) { Leyoutech.Utility.DebugUtility.Log("技能按键响应", string.Format("技能 Id = {0} , 不可释放", skillId)); return; } float fire_CountDown = m_CfgEternityProxy.GetGamingConfig(1).Value.Sound.Value.CountDown.Value.Fire; m_ISpacecraftSkillProperty.SetFireCountdown(fire_CountDown); ////执行预演播放,并请求服务器验证,如果失败则打断释放 ////执行释放 ReleaseSkill(skillId); if (m_ISpacecraftSkillProperty.IsMain()) //主角 { C2S_ButtonDown(); } // Trigger 重复类技能记录 m_TriggerStartTime = Time.time; m_TriggerSkillId = skillId; IsTrigger = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.IsTrigger; m_TriggerLogicTime = m_CfgEternityProxy.GetSkillData(skillId).BaseData.Value.Triggertime; m_ISpacecraftSkillProperty.SetSkillBttonIsDown(true); } else //抬起 { if (m_ISpacecraftSkillProperty.IsMain()) //主角 { if (m_StateMachine.IsRunning && skillId == SkillID) { C2S_ButtonUp(); } } m_TriggerSkillId = -1; IsTrigger = false; m_ISpacecraftSkillProperty.SetSkillBttonIsDown(false); } } }