/// <summary> /// 获取指定种族的属性 /// </summary> /// <param name="roleOfRace"></param> /// <returns></returns> public RoleOfRaceInfoStruct this[RoleOfRace roleOfRace] { get { if (roleOfRaceInfoStructArray == null) { return(null); } RoleOfRaceInfoStruct roleOfRaceInfoStruct = roleOfRaceInfoStructArray.FirstOrDefault(temp => temp.roleOfRace == roleOfRace); return(roleOfRaceInfoStruct); } #if UNITY_EDITOR set { if (roleOfRaceInfoStructArray == null) { roleOfRaceInfoStructArray = new RoleOfRaceInfoStruct[0]; } List <RoleOfRaceInfoStruct> roleOfRaceInfoStructList = new List <RoleOfRaceInfoStruct>(roleOfRaceInfoStructArray); RoleOfRaceInfoStruct roleOfRaceInfoStruct = roleOfRaceInfoStructArray.FirstOrDefault(temp => temp.roleOfRace == roleOfRace); if (roleOfRaceInfoStruct == null) { roleOfRaceInfoStructList.Add(value); } else { roleOfRaceInfoStructList.Remove(roleOfRaceInfoStruct); roleOfRaceInfoStructList.Add(value); } roleOfRaceInfoStructArray = roleOfRaceInfoStructList.ToArray(); } #endif }
public void Init() { RoleOfRaceData roleOfRaceData = DataCenter.Instance.GetMetaData <RoleOfRaceData>(); RoleOfRaceInfoStruct roleOfRaceInfoStruct = roleOfRaceData[roleOfRace]; if (roleOfRaceInfoStruct != null) { //重置属性 IAttributeState tempAdditional = new AttributeStateAdditional();// MonsterBaseAttribute.Clone();//赋值出来一份用来计算种族成长 tempAdditional.SetRoleOfRaceAddition(roleOfRaceInfoStruct); tempAdditional.Power = MonsterBaseAttribute.Power; tempAdditional.Mental = MonsterBaseAttribute.Mental; tempAdditional.Quick = MonsterBaseAttribute.Quick; MonsterBaseAttribute = (AttributeStateAdditional)(MonsterBaseAttribute + tempAdditional); MonsterBaseAttribute.Power /= 2; MonsterBaseAttribute.Quick /= 2; MonsterBaseAttribute.Mental /= 2; //系数 PhysicAttackFactor = new PhysicAttackFactor() { IncreaseRatioInjuryFactor = roleOfRaceInfoStruct.physicAttackToDamageRateRatio, MinimumDamageFactor = roleOfRaceInfoStruct.physicQuickToMinDamageRatio }; PhysicDefenseFactor = new PhysicDefenseFactor() { CoefficientRatioReducingDamageFactor = roleOfRaceInfoStruct.physicDefenseToHurtRateRatio, ImmunityInjury = roleOfRaceInfoStruct.physicQuickToHurtExemptRatio }; MagicAttackFactor = new MagicAttackFactor() { IncreaseRatioInjuryFactor = roleOfRaceInfoStruct.magicAttackToDamageRateRatio }; MagicDefenseFactor = new MagicDefenseFactor() { CoefficientRatioReducingDamageFactor = roleOfRaceInfoStruct.magicDefenseToHurtRateRatio }; } }
/// <summary> /// 设置种族成长对象 /// </summary> /// <param name="roleOfRaceInfoStruct">种族成长对象</param> public void SetRoleOfRaceAddition(RoleOfRaceInfoStruct roleOfRaceInfoStruct) { this.roleOfRaceInfoStruct = roleOfRaceInfoStruct; }