public BulletImpactData GetBulletImpactData(int skillId, BulletData bData) { SkillConfigData skillData = SkillDataManager.Instance.GetSkillConfigData(skillId); if (skillData == null) { skillData = new SkillConfigData(); //如果没有技能数据,填充默认值,例如死亡子弹 } int calID = bData.m_calculateId; int strenthenSkillId = skillData.FatherSkill == 0? skillId : skillData.FatherSkill; SSkillInfo?skillInfo = SkillModel.Instance.GetCurSkill(strenthenSkillId); if (bData.m_bulletStrengthen == 1 && skillInfo != null && skillInfo.Value.byStrengthenLv > 1) { calID = bData.m_calculateId + skillInfo.Value.byStrengthenLv; } if (bData.m_calculateId == 0) { calID = 0; } BulletImpactData bulletImpactData = SkillDataManager.Instance.GetBulletImpactData(calID); if (null == bulletImpactData) { TraceUtil.Log("No impact Data"); } return(bulletImpactData); }
public SkillConfigData GetSkillConfigData(int skillId) { SkillConfigData data = null; m_skillConfigDataDictionary.TryGetValue(skillId, out data); return(data); }
private void AddEffect(SkillConfigData frameData) { var EffectNameAndParams = frameData.Effectname.Split('|'); var effectName = EffectNameAndParams[0]; Vector2 pos = new Vector2(float.Parse(frameData.Others[0]), float.Parse(frameData.Others[1])); if (frameData.Effecttarget == EFFECT_TARGET_ROLE_TOP || frameData.Effecttarget == EFFECT_TARGET_ROLE_BOTTOM) { _role.AddEffect(SystemConsts.SKILL_EFF_PREFIX + effectName, pos, true, true, true); } else if (frameData.Effecttarget == EFFECT_TARGET_MAP_Z) { Vector3 dest = _role.transform.position; //dest.x += pos.x; dest.y += pos.y; dest.z = dest.y; if (frameData.Others.Length > 2) { dest.z += float.Parse(frameData.Others[2]); } var efGo = _role.Map.addEffect(SystemConsts.SKILL_EFF_PREFIX + effectName, dest, _role, true, pos.x, true); if (EffectNameAndParams.Length > 1) { if (int.Parse(EffectNameAndParams[1]) == 1) { _canCancelEffect = efGo; } } } }
private bool BreakSkillCheck(SkillConfigData skillConfigData) { //bool invokeNextSkill = true; if (SelectedSkillBase != null) { if (SelectedSkillBase.SkillId != skillConfigData.m_skillId) { if (SelectedSkillBase.OnFire) //µ±Ç°ŒŒÄÜÊ©·ÅÖÐ { if (IsExplodeState) { if (skillConfigData.m_breakLevel < SelectedSkillBase.CurrentActionThresHold)//SelectedSkillBase.SkillData.m_breakLevel) { //NetServiceManager.Instance.BattleService.SendBreakSkillCommand(new SMsgFightBreakSkill_CS() { SkillID = this.SelectedSkillBase.SkillId }); return(false); } } else { if (skillConfigData.m_breakLevel <= SelectedSkillBase.CurrentActionThresHold) //Á¬ÕÐÐޞķœ°žÒªÇóµÈŒ¶ÏàͬµÄŒŒÄÜÒ²¿ÉŽò¶Ï,¡Ÿ2013-11-22 Ó֞ijÉÏàͬµÈŒ¶²»¿ÉŽò¶Ï¡¿ { //NetServiceManager.Instance.BattleService.SendBreakSkillCommand(new SMsgFightBreakSkill_CS() { SkillID = this.SelectedSkillBase.SkillId }); return(false); } } } } } return(true); }
/// <summary> /// 获取特定的Effect实例 /// </summary> /// <returns>The implement.</returns> /// <param name="op">Op.</param> public ICastEffect getImplement(EffectConfigData cfg, SkillConfigData sk) { Queue <ICastEffect> impQueue = null; ICastEffect imp = null; EffectOp op = cfg.EffectType; Type type = null; if (ISkEff.TryGetValue(op, out type)) { if (ImpleEff.TryGetValue(op, out impQueue)) { if (impQueue.Count == 0) { imp = (ICastEffect)Activator.CreateInstance(type); } else { imp = impQueue.Dequeue(); } } else { imp = (ICastEffect)Activator.CreateInstance(type); } if (imp != null) { imp.Init(cfg, sk); } } return(imp); }
public ShootToPoint(Role from, Vector2 pt, SkillConfigData frameData, Skill skill) { _shooter = from; _toPt = pt; _frameData = frameData; _skill = skill; float offsetX = float.Parse(_frameData.Others[0]); float offsetY = float.Parse(_frameData.Others[1]); _arrow = (GameObject)UnityEngine.Object.Instantiate(Resources.Load(SystemConsts.SKILL_EFF_PREFIX + _frameData.Effectname)); _arrow.GetComponent <SpriteRenderer>().sortingLayerName = SystemConsts.ActiveLayer; _arrow.GetComponent <SpriteRenderer>().sortingOrder = 100; var face = _shooter.getOrientation() == Role.Orientation.RIGHT ? 1 : -1; _fromPt = _shooter.transform.position; _fromPt.x += offsetX * face; _fromPt.y += offsetY; _speed = 24.0f; _speedPerFrame = _speed / 60f; //(float)Application.targetFrameRate; _arrow.transform.position = _fromPt; Vector2 direction = _toPt - _fromPt; float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; _arrow.transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); }
void RankSkillData() { Dictionary <int, List <int> > skillMapTemp = new Dictionary <int, List <int> > (); foreach (var map in skillMap) { //排序 List <int> temp = new List <int>(); int i = 0; for (i = 0; i < map.Value.Count; i++) { SkillConfigData configData0 = SkillDataManager.Instance.GetSkillConfigData(map.Value[i]); if (configData0.PreSkill == 0) { temp.Add(configData0.m_skillId); } } for (int j = 0; j < map.Value.Count; j++) { for (i = 0; i < map.Value.Count; i++) { SkillConfigData configData1 = SkillDataManager.Instance.GetSkillConfigData(map.Value[i]); if (configData1.PreSkill == temp[j]) { temp.Add(configData1.m_skillId); break; } } } skillMapTemp.Add(map.Key, temp); } skillMap.Clear(); skillMap = skillMapTemp; // Debug.Log ("skillMap=="+skillMap.Count); }
/// <summary> /// 判断是否播放技能摄像机 /// </summary> /// <param name="cameraData"></param> private void IsPlaySkillCamera(SkillConfigData skillData) { if (!m_PlayerBehaviour.IsHero) { return; } Vector3 cameraPos = this.m_roleBehaviour.transform.position + skillData.cameraRangeOffset; var monsterList = MonsterManager.Instance.GetMonstersList(); foreach (var item in monsterList) { var distance = Vector3.Distance(item.GO.transform.position, cameraPos); if (skillData.skillCameraRange >= distance) { if (m_skillCamera == null) { m_skillCamera = CreateSkillCamera(); m_skillCamera.gameObject.AddComponent <SkillCamera>(); } m_skillCamera.GetComponent <SkillCamera>().InitCameraData(skillData.cameraIdList);; } } }
public SkillData(int skillId, int level) { skillConfig = GMDataBaseSystem.SearchIdStatic <SkillConfigData>(GameData.SkillConfig, skillId); foreach (SkillEffectConfigData sd in GameData.SkillEffectConfig) { if (sd.skillId == skillId && sd.skillLevel == level) { effectConfig = sd; break; } } foreach (SkillLearnConfigData sd in GameData.SkillLearnConfig) { if (sd.skillId == skillId) { learnConfig = sd; break; } } if (learnConfig == null) { Log.Sys("Skill Learn Config Not exist " + skillId + " " + level); } if (effectConfig == null) { Log.Sys("SkillData Init Error " + skillId + " " + level); } Log.Important("skill Id and skill Effect " + skillConfig + " " + effectConfig); }
void Init() { if (isRead) { return; } isRead = true; if ((skillPosIndex == 2 && skillCount == 2) || (skillPosIndex == 3 && skillCount == 3)) { line.SetActive(false); } else if (skillPosIndex == 2 && skillCount == 3) { line.transform.localScale = new Vector3(width, line.transform.localScale.y, 1); } else if (skillPosIndex == 1 && skillCount == 2) { line.transform.localScale = new Vector3(240, line.transform.localScale.y, 1); } configData = SkillDataManager.Instance.GetSkillConfigData(skillID); if (iconObj == null) { iconObj = CreatObjectToNGUI.InstantiateObj(configData.Icon_CirclePrefab, parentIconPoint.transform); } }
//技能解锁 public void UnlockSkill(SMsgSkillUnLock_SC sSkillInfo) { //一般不可能存在 if (sInfos.Exists(P => P.wSkillID == sSkillInfo.wSkillId)) { var targetskill = sInfos.SingleOrDefault(P => P.wSkillID == sSkillInfo.wSkillId); sInfos.Remove(targetskill); SSkillInfo newInfo = new SSkillInfo() { wSkillID = (ushort)sSkillInfo.wSkillId, wSkillLV = sSkillInfo.byUpgradeLv, byStrengthenLv = sSkillInfo.byStrengthenLv }; sInfos.Add(newInfo); } else { SSkillInfo newInfo = new SSkillInfo() { wSkillID = (ushort)sSkillInfo.wSkillId, wSkillLV = sSkillInfo.byUpgradeLv, byStrengthenLv = sSkillInfo.byStrengthenLv }; sInfos.Add(newInfo); } SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData((int)(sSkillInfo.wSkillId)); if (configData.PreSkill != 0) { UIEventManager.Instance.TriggerUIEvent(UIEventType.SkillAdvanceEvent, sSkillInfo); } SkillModel.Instance.DealSkillAdUpStrengthen(); }
public void RunFrame(SkillConfigData frameData) { if (frameData.Type == FRAME_TYPE_PLAY_MOTION) { PlayMotion(frameData); } else if (frameData.Type == FRAME_TYPE_ADD_EFFECT) { AddEffect(frameData); } else if (frameData.Type == FRAME_TYPE_EFFECTIVE) { ProcessEffective(frameData); } else if (frameData.Type == FRAME_TYPE_MOVE) { } else if (frameData.Type == FRAME_TYPE_COMPLETE) { if (_skillTpl.Hidebuffeff == 1) { _role.SetBuffVisible(true); } } else if (frameData.Type == FRAME_TYPE_LOCK_POSITON) { _lockPosition = _targetRole.GetAttackablePosition(_role); } else if (frameData.Type == FRAME_TYPE_CANNOT_CANCEL) { _canCancelPhase = false; } else if (frameData.Type == FRAME_TYPE_ADD_BUFFS_TO_SELF) { for (int i = 0; i < frameData.Others.Length; i++) { _role.AddBuff(int.Parse(frameData.Others[i]), _role); } } else if (frameData.Type == FRAME_TYPE_REMOVE_SELF_BUFFS) { for (int i = 0; i < frameData.Others.Length; i++) { _role.RemoveBuff(int.Parse(frameData.Others[i])); } } //else if (frameData.Type == FRMAE_TYPE_HIDE_BUFF) //{ // _role.SetBuffVisible(false); //} //else if (frameData.Type == FRAME_TYPE_SHOW_BUFF) //{ // _role.SetBuffVisible(true); //} }
void SkillFight(int skillID) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); if (configData.skillText.Equals("0")) { return; } StartCoroutine(SkillTipFun(configData)); }
/// <summary> /// 检测回复技能 /// /// 检测逻辑和上面的并不太一致 /// 判定顺序是: /// 0. 判定技能的类型 /// 1. 判定施法者的状态 /// 2. 选在施法的距离(特定范围)内血最少的 英雄 NPC /// </summary> /// <returns><c>true</c>, if cast was caned, <c>false</c> otherwise.</returns> /// <param name="caster">Caster.</param> public bool canCast(ServerNPC caster, RtSkData rtOne) { bool can = true; #if DEBUG Utils.Assert(caster == null, "Can't know whether can cast skill unless caster isn't null."); Utils.Assert(rtOne == null, "Can't know whether can cast skill unless runtime skill isn't null"); #endif SkillConfigData skillCfg = rtOne.skillCfg; /// 0. 判定技能的类型 can = skillCfg.DamageType == 1; if (can == false) { return(can); } /// 1.判定施法者的状态 //只有LifeNPC才检查施法者的状态 ServerLifeNpc castlife = caster as ServerLifeNpc; if (castlife != null) { if (skillCfg.CasterStatusReject.AnySame(castlife.curStatus)) { //不可施法 can = false; } } if (can == false) { return(can); } /// 2. 选在施法的距离(特定范围)内血最少的 英雄 NPC List <ServerNPC> friendlyArmy = SelectorTools.GetNpcWithInRange(caster, skillCfg.Distance, NpcMgr, caster.Camp, KindOfNPC.Life, LifeNPCType.Hero); if (friendlyArmy != null && friendlyArmy.Count > 0) { //选择血最少的 ServerNPC friend = friendlyArmy.OrderBy(npc => (npc.data.rtData.curHp * 1.0f / npc.data.rtData.totalHp)).FirstOrDefault(); if (friend != null) { NPCRuntimeData npcRtdt = friend.data.rtData; float factor = npcRtdt.curHp * 1.0f / npcRtdt.totalHp; //低于20%的 if (factor > 0.2f) { can = false; } } } return(can); }
public void Show(int ID, int treeId, int posIndex, SkillUpgradePanel myparent) { skillID = ID; treeID = treeId; skillPosIndex = posIndex; myParent = myparent; configData = SkillDataManager.Instance.GetSkillConfigData(skillID); curSkill = SkillModel.Instance.GetCurSkill(skillID); Init(); ShowInfo(); }
public UpgradeSkillInfo(SSkillInfo sSkill) { this.localSkillConfigData = SkillDataManager.Instance.GetSkillConfigData(sSkill.wSkillID); this.SkillLevel = sSkill.wSkillLV; if (SkillLevel < 10) { this.CanUpgrade = true; } else { this.CanUpgrade = false; } }
public int GetSkillPosIndex(int skillID) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); for (int i = 0; i < skillMap[configData.SkillTreeID].Count; i++) { if (skillMap[configData.SkillTreeID][i] == skillID) { return(i + 1); } } return(0); }
bool SkillMiddle(bool isUpgrade, UILabel lvLabel, UILabel monLabel) { bool isCanClick = false; string monStr = ""; //升级 string upgradeStr = "[FF0000]{0}/{1}[-]"; if (isUpgrade) { if (PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL >= configData.m_unlockLevel + curSkill.Value.wSkillLV * configData.m_UpdateInterval) { upgradeStr = "[54E44F]{0}/{1}[-]"; isCanClick = true; } lvLabel.text = string.Format(upgradeStr, PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL, configData.m_unlockLevel + curSkill.Value.wSkillLV * configData.m_UpdateInterval); if (PlayerManager.Instance.IsMoneyEnough(configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1])) { monStr = "[54E44F]" + configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1]; if (!isCanClick) { isCanClick = false; } } else { monStr = "[FF0000]" + configData.m_upgradeMoneyParams [curSkill.Value.wSkillLV - 1]; if (isCanClick) { isCanClick = false; } } monLabel.text = "[FFFFFF]" + string.Format(LanguageTextManager.GetString("IDS_I7_121"), monStr); // ; } else { SkillConfigData configPre = SkillDataManager.Instance.GetSkillConfigData(configData.PreSkill); SSkillInfo? preSkill = SkillModel.Instance.GetCurSkill(configData.PreSkill); lvLabel.text = LanguageTextManager.GetString(configPre.m_name); int preLv = preSkill == null?0:(int)preSkill.Value.wSkillLV; if (preSkill != null && preSkill.Value.wSkillLV >= configPre.m_maxLv) { upgradeStr = "[54E44F]{0}/{1}[-]"; isCanClick = true; } monLabel.text = string.Format(upgradeStr, preLv, configPre.m_maxLv); } return(isCanClick); }
//总技能伤害 //技能总伤害=向下取整((向下取整((参数1+参数2+参数3)/参数4)×参数4) /10) public float SkillHurt(int skillID) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); SSkillInfo? curSkill = GetCurSkill(skillID); int skillLv = curSkill == null ? 1 : (int)(curSkill.Value.wSkillLV); if (skillLv >= configData.m_skillDamageList.Count) { TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "找不到该等级配置信息"); } return(configData.m_skillDamageList[skillLv - 1] * 0.1f); // return Mathf.FloorToInt ((Mathf.FloorToInt((configData.m_skillDamage[0]*skillLv*skillLv+ // configData.m_skillDamage[1]*skillLv+configData.m_skillDamage[2])/configData.m_skillDamage[3])*configData.m_skillDamage[3])/100)*10; }
/// <summary> /// 返回一个技能所有的Effect实例 /// </summary> /// <returns>The effect list.</returns> /// <param name="efCfgList">Ef cfg list.</param> public ICastEffect[] getImplements(EffectConfigData[] efCfgList, SkillConfigData sk) { int count = efCfgList.Length; ICastEffect[] effList = new ICastEffect[count]; int i = 0; for (; i < count; ++i) { effList[i] = getImplement(efCfgList[i], sk); } return(effList); }
IEnumerator SkillTipFun(SkillConfigData configData) { yield return(new WaitForSeconds(configData.HintTextList [2] / 1000f)); GameObject tip = NGUITools.AddChild(gameObject, skillTipPrefab); //(GameObject)Instantiate(skillEffTipPrefab);// Transform skillTipBg = tip.transform.Find("Bg"); UILabel tipLabel = tip.transform.Find("Tip").GetComponent <UILabel>(); //tip.transform.parent = skillTip.transform; tip.transform.localPosition = new Vector3(configData.HintTextList[0], -1 * configData.HintTextList[1], 1); tipLabel.text = LanguageTextManager.GetString(configData.skillText); yield return(new WaitForSeconds(configData.HintTextList [3] / 1000f)); Destroy(tip); }
//技能是否解锁,只有每行的第一个才可能锁,其它的都解锁了 public bool IsUnLockSkill(int skillID) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); if (configData.PreSkill != 0) { return(true); } if (PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL < configData.m_unlockLevel) { //说明没有解锁 return(false); } return(true); }
public override void DoBeforeEntering() { m_state = SkillFireSelectState.STATE_WAIT_FOR_SELECT_TARGET; m_canFireRangeSkill = false; m_fireSelected = false; IsSkillBeBreaked = false; m_playerBehaviour = (PlayerBehaviour)(m_roleBehaviour); m_skillBase = m_playerBehaviour.NextSkillBase; if (m_skillBase != null) { m_skillData = SkillDataManager.Instance.GetSkillConfigData(m_skillBase.SkillId); m_skillDirType = m_skillData.m_directionParam; HideAllEffect(); if (GameManager.Instance.m_gameSettings.DoubleClickSkill) { switch (m_skillDirType) { case 1: { ShowDirectionEffect(); } break; case 2: { ShowRangeEffect(); } break; case 3: { ShowFanEffect(); } break; default: break; } } base.DoBeforeEntering(); this.m_playerBehaviour.ExecuteInitiativeSkillSelectedState = true; } }
/// <summary> /// 返回可以释放的技能, 这个要一直检测 /// 这个只检查4个技能,不检查普通攻击 /// </summary> /// <returns>The cast.</returns> /// <param name="caster">Caster.</param> /// <param name="target">Target.</param> public List <short> canCast(ServerNPC caster, ServerNPC target) { List <short> skNumList = new List <short>(); #if DEBUG Utils.Assert(caster == null, "Caster is null when check whether can cast skill."); Utils.Assert(target == null, "Target is null when check whether can cast skill."); #endif ServerLifeNpc castLife = caster as ServerLifeNpc; if (castLife.IsAlive == false) { return(skNumList); } short pos = 0; for ( ; pos < Consts.MAX_SKILL_COUNT; ++pos) { RtSkData rtsk = castLife.runSkMd.getRuntimeSkill(pos); if (rtsk != null) { bool can = false; /// /// 冷却时间好了吗 /// can = rtsk.canCast; SkillConfigData skCfg = rtsk.skillCfg; if (skCfg.DamageType == (short)1) { can = can & CanCast.canCast(caster, rtsk); } else if (skCfg.DamageType == (short)0) { can = can & CanCast.canCast(caster, target, rtsk); } //如果可以则加入可释放列表 if (can) { skNumList.Add(pos); } } } return(skNumList); }
public MultiGroundAttackAction(Role attacker, Role target, Skill skill, SkillConfigData frameData, Vector2 lockPosition) : base(attacker) { _target = target; _skill = skill; _frameData = frameData; _lockPosition = lockPosition; _startHurtFrame = int.Parse(_frameData.Others[0]); _hurtFrequency = int.Parse(_frameData.Others[1]); _hurtTotalNum = int.Parse(_frameData.Others[2]); _frameCount = 0; _hurtCount = 0; _speedScale = _skill.SkillTpl.ID == 4?_role.ActionSpeed : 1f;//只有技能4需要根据释放速度来调节速度 }
public SingleSkillInfo(SkillConfigData LocalData) { this.localSkillData = LocalData; //this.Lock = IsLock(LocalData.m_skillId); this.OnSelect = false; this.BattleIconPosition = 0; foreach (SSkillInfo child in PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos) { //TraceUtil.Log("已经解锁技能ID:"+child.wSkillID); //if (child.wSkillID == SkillID && child.wSkillLV >= localSkillData.m_unlockLevel) if (child.wSkillID == LocalData.m_skillId) { this.Lock = false; this.SkillLevel = child.wSkillLV; } } }
public void SetButtonAttribute(SkillConfigData skillConfigData, BattleSkillButtonDelegate battleSkillButtonCallBack) { this.battleSkillButtonCallBack = battleSkillButtonCallBack; skillButtonStatus = SkillButtonStatus.Enable; RecoveSprite.fillAmount = 0; this.skillConfigData = skillConfigData; if (skillConfigData == null) { SetButtonIcon(null); SetCallBackFuntion(null, null); } else { SetButtonIcon(skillConfigData.m_icon); SetCallBackFuntion(ButtonClick, null); } }
//进阶判定// bool IsCanAdvanceSkillModel(int skillID) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); SSkillInfo? curSkill = GetCurSkill(skillID); //if (!SkillModel.Instance.IsOpenSkill (skillID)) { if (configData.PreSkill != 0) { //进阶 if (curSkill == null && SkillMiddleModel(skillID, false, false)) { return(true); } } //} return(false); }
bool IsCanUpgradeSkillModel(int skillID, bool isDouble) { SkillConfigData configData = SkillDataManager.Instance.GetSkillConfigData(skillID); SSkillInfo? curSkill = GetCurSkill(skillID); if (SkillModel.Instance.IsOpenSkill(skillID)) { if (curSkill.Value.wSkillLV < configData.m_maxLv) { //可升级 if (SkillMiddleModel(skillID, true, isDouble)) { return(true); } } } return(false); }
/// <summary> /// 返回999999为角色消息为空 /// </summary> /// <param name="SkillData"></param> /// <returns></returns> int GetSkillMpTake(SkillConfigData SkillData) { if (PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos == null) { return(EmptyColdWork); } float[] ParamList = SkillData.m_manaConsumeParams; var getSkill = PlayerManager.Instance.HeroSMsgSkillInit_SC.sInfos.FirstOrDefault(P => P.wSkillID == SkillData.m_skillId); if (getSkill.wSkillLV == 0) { //TraceUtil.Log(SystemModel.Common,TraceLevel.Error,"人物已经装备技能上无法找到对应SkillID:"+SkillData.m_skillId); } int roleLevel = PlayerManager.Instance.FindHeroDataModel().UnitValues.sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_LEVEL; int MpTake = (int)(Mathf.FloorToInt((ParamList[0] * Mathf.Pow(roleLevel, 2) + ParamList[1] * roleLevel + ParamList[2]) / ParamList[3]) * ParamList[3]); //Debug.LogWarning("技能耗蓝:"+LanguageTextManager.GetString(SkillData.m_name)+","+MpTake); return(MpTake); }