using System.Collections.Generic; using UnityEngine; using LitJson; public partial class HeroConfig : ConfigBase { public Dictionary inheritPropertiesDict = new Dictionary(); protected override void OnConfigParseCompleted() { base.OnConfigParseCompleted(); inheritPropertiesDict.Clear(); inheritPropertiesDict.Add(HeroAttrType.attack, AtkInheritPer); inheritPropertiesDict.Add(HeroAttrType.defense, DefInheritPer); inheritPropertiesDict.Add(HeroAttrType.hp, HPInheritPer); // json格式 // {"属性ID":值, ...} // 属性ID对应属性条目表的ID // 有值的配即可,没有配置的属性默认0 JsonData jsonData = JsonMapper.ToObject(BatAttrDict); foreach (var attrId in jsonData.Keys) { if (int.TryParse(attrId.ToString(), out int attrTypeId)) { HeroAttrType attrType = (HeroAttrType)attrTypeId; if (jsonData[attrId] != null && int.TryParse(jsonData[attrId].ToString(), out int value)) { if (inheritPropertiesDict.ContainsKey(attrType)) { Debug.LogError($"HeroTalentConfig: 属性 {attrType} 已经存在,无法重复添加。请检查配置文件。"); } else { inheritPropertiesDict.Add(attrType, value); } } } } } public int GetInheritPercent(HeroAttrType attrType) { if (inheritPropertiesDict.TryGetValue(attrType, out int perc)) { return perc; } return 0; } }