//获取记录,如果不存在返回null public static DBSkillInfoConf GetRecord(int skillID, bool errorMsg = true) { if (instance == null) { Debug.LogError("表DBSkillInfoTable未加载"); return(null); } DBSkillInfoConf record = null; if (recordDict.TryGetValue(skillID, out record)) { return(record); } if (errorMsg) { Debug.LogErrorFormat("表DBSkillInfoTable没有skillID = {0}的记录", skillID); } return(null); }
public void Init() { //如果recordDict不为null,说明已经初始化了 if (recordDict != null) { return; } recordDict = new Dictionary <int, DBSkillInfoConf>(); for (int i = 0; i < recordArray.Length; i++) { DBSkillInfoConf record = recordArray[i]; if (!recordDict.ContainsKey(record.skillID)) { recordDict.Add(record.skillID, record); } else { Debug.LogErrorFormat("表DBSkillInfoTable有重复的记录,id = {0}", record.skillID); } } }
public void Show(DBSkillInfoConf skillInfoConf) { nameLabel.text = skillInfoConf.skillNameText; cdLabel.text = skillInfoConf.cd + "秒"; castTimeLabel.text = skillInfoConf.castTime == 0 ? "瞬发" : skillInfoConf.castTime + "秒"; castCombinKeyLabel.text = skillInfoConf.castCombianKey; descLabel.text = skillInfoConf.instruction; DBSkillConf skillConf = DBSkillTable.GetRecord(skillInfoConf.skillID, false); if (skillConf == null) { //没有伤害的技能 attributeLabel.text = ""; return; } List <DBSkillDamageConf> damageList = new List <DBSkillDamageConf>(); //跳过伤害为0的攻击 for (int i = 0; i < skillConf.attackList.Count; i++) { for (int j = 0; j < skillConf.attackList[i].damages.Length; j++) { DBSkillDamageConf damageConf = DBSkillDamageTable.GetRecord(skillConf.attackList[i].damages[j]); if (damageConf.damagePercent > 0) { damageList.Add(damageConf); } } } if (damageList.Count == 0) { attributeLabel.text = ""; } else if (damageList.Count == 1) { attributeLabel.text = string.Format("造成{0}%攻击力的伤害", damageList[0].damagePercent); } else { string text = ""; for (int i = 0; i < damageList.Count; i++) { DBSkillDamageConf damageConf = damageList[i]; string damageText = ""; if (damageConf.times <= 1) { damageText = string.Format("造成{0}%攻击力的伤害", damageConf.damagePercent); } else { damageText = string.Format("每次造成{0}%攻击力的伤害", damageConf.damagePercent); } if (string.IsNullOrEmpty(damageConf.desc)) { text += string.Format(" 第{0}段,进行{1}次攻击,{2}\n", i + 1, damageConf.times, damageText); } else { text += string.Format(" 第{0}段,{1}, 进行{2}次攻击,{3}\n", i + 1, damageConf.desc, damageConf.times, damageText); } } attributeLabel.text = text; } }