private void outputCombatLogInfo() { MessageCenter.Message message = new MessageCenter.Message("", Caster.ParentEntity); if (UsedAbility.AbilityType == AbilityTypes.Physical || UsedAbility.AbilityType == AbilityTypes.Magical) { if (DidMiss) { message.ShortMessage = String.Format("{0} missed their attack!", Caster.UnitName); message.DetailedMessage = String.Format("{0} missed their attack against {1}.", Caster.UnitName, Target.UnitName); message.DetailedMessage += " Used the ability " + UsedAbility.AbilityName + "."; } else if (DidAvoid) { message.ShortMessage = String.Format("{0} avoided the attack!", Caster.UnitName); message.DetailedMessage = String.Format("{0} avoided {1}'s attack.", Caster.UnitName, Target.UnitName); message.DetailedMessage += " Used the ability " + UsedAbility.AbilityName + "."; } else if (DidCrit) { message.ShortMessage = String.Format("{0} scored a critical strike! ({1} damage)", Caster.UnitName, AppliedDamage); message.DetailedMessage = String.Format("{0} dealt critical damage against {1} worth {2}. {3} damage absorbed and {4} damage reflected.", Caster.UnitName, Target.UnitName, AppliedDamage, AbsorbedDamage, ReflectedDamage); message.DetailedMessage += " Used the ability " + UsedAbility.AbilityName + "."; } else { message.ShortMessage = String.Format("{0} scored a strike! ({1} damage)", Caster.UnitName, AppliedDamage); message.DetailedMessage = String.Format("{0} attacked {1} for {2} damage. {3} damage absorbed and {4} damage reflected.", Caster.UnitName, Target.UnitName, AppliedDamage, AbsorbedDamage, ReflectedDamage); message.DetailedMessage += " Used the ability " + UsedAbility.AbilityName + "."; } if (HPLeech > 0) { message.DetailedMessage += string.Format(" {0} HP Leeched.", HPLeech); Caster.AddHealth(HPLeech); } if (MPLeech > 0) { message.DetailedMessage += string.Format(" {0} MP Leeched.", MPLeech); Caster.AddMana(MPLeech); } } MessageCenter.PostMessage(message); }
/// <summary> /// 自定义消息添加至本地信箱 /// </summary> /// <param name="funcName">具体执行的方法名字</param> /// <param name="message">具体执行的方法</param> /// <param name="Childaddress">绑定的子物体,可以为空</param> public void AddMessage2LocalBox(string funcName, MessageCenter.Message message, string Childaddress = null) { UIName = gameObject.name; if (LocalMessageBox == null) { LocalMessageBox = new Dictionary <LocalMessageAddress, MessageCenter.Message>(); } //将本地信箱注册入消息中心 AddLocalMessageBox2MessageCenter(); //如果子物体为空 if (Childaddress == null) { Childaddress = UIName; } LocalMessageAddress localMessageAddress = new LocalMessageAddress(Childaddress, funcName); if (!LocalMessageBox.ContainsKey(localMessageAddress)) { LocalMessageBox.Add(localMessageAddress, null); //Debug.Log(UIName+"已添加本地消息体"); } LocalMessageBox[localMessageAddress] = message; }