private void SkillChose(int skillId) { Skill skill = JsonMgr.GetSingleton().GetSkillByID(skillId); skillname_txt.text = skill.name; int skillLv = heroData.SkillLevel[skill.ID]; skilllv_txt.text = skillLv.ToString(); //经验花费等级+5的4次幂 * 0.01 int expcost = Mathf.RoundToInt(Mathf.Pow(skillLv + 5, 4) * 0.01f); expcost_txt.text = expcost.ToString(); int moneyconst = skillLv * 500; moneycost_txt.text = moneyconst.ToString(); //2被动 3自动 4主动 string type = "被动"; if (skill.type == 3) { type = "自动"; } else if (skill.type == 4) { type = "主动"; } condition_txt.text = type; string desc = skill.desc; var o = new List <string>(); int start = 0; for (int i = 0; i < desc.Length; ++i) { if (desc[i].Equals('{')) { start = i; } else if (desc[i].Equals('}') && start != 0) { o.Add(desc.Substring(start + 1, i - start - 1)); start = 0; } } var n = new string[o.Count]; for (int i = 0; i < o.Count; i++) { string[] sp = o[i].Split(':'); int tostring = int.Parse(sp[0]); sp = sp[1].Split('|'); float att = AttrUtil.SkillPanelShow(float.Parse(sp[0]), skillLv, float.Parse(sp[1])); string s = string.Format("{0:###.#}", att * (tostring == 1 ? 100 : 1)); n[i] = s + (tostring == 1 ? "%" : ""); } for (int i = 0; i < n.Length; i++) { desc = desc.Replace(o[i], n[i]); } desc = desc.Replace("{", "").Replace("}", ""); tell_txt.supportRichText = true; tell_txt.text = desc; if (heroData.SkillLevel[skill.ID] >= HeroMgr.MaxHeroLevel) { lvup_btn.interactable = false; return; } lvup_btn.interactable = true; EventListener.Get(lvup_btn.gameObject).OnClick = e => { if (!lvup_btn.interactable) { CanvasView.Instance.AddNotice("技能满级"); return; } //检测技能升级条件 long cash = Role.Instance.Cash; long expPool = Role.Instance.ExpPool; if (expcost > expPool) { CanvasView.Instance.AddNotice("经验不足,技能升级失败!"); return; } if (moneyconst > cash) { CanvasView.Instance.AddNotice("金币不足,技能升级失败!"); return; } //通知服务器技能升级 heroData.SkillLevel[skill.ID]++; SkillChose(skillId); }; }