//解析伤害效果的数据 private void ParseEffect_Damage(XmlElement root) { CEffectDamageMeta meta = new CEffectDamageMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "Amount", "value", ref meta.Amount); CEffectMetaManager.AddMeta(meta); }
//解析效果集合 private void ParseEffect_Set(XmlElement root) { string str = string.Empty; var meta = new CEffectSetMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "WhichUnit", "value", ref str); meta.WhichUnit = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodesAttr(root, "EffectArray", meta.EffectList); CEffectMetaManager.AddMeta(meta); }
//解析 buff效果 private void ParseEffect_Behavior(XmlElement root) { string str = string.Empty; var meta = new CEffectApplyBuffMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "WhichUnit", "value", ref str); meta.WhichUnit = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodeAttr(root, "Behavior", "value", ref meta.Behavior); CEffectMetaManager.AddMeta(meta); }
//解析指令效果 private void ParseEffect_Order(XmlElement root) { string str = string.Empty; var meta = new CEffectIssueOrderMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "WhichUnit", "value", ref str); meta.WhichUnit = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodeAttr(root, "Delay", "value", ref meta.Delay); m_xreader.TryReadChildNodeAttr(root, "EffectOrder", "value", ref str); meta.EffectOrder = CAbilityUtil.GetOrder(str); CEffectMetaManager.AddMeta(meta); }
/// <summary> /// 给owner创建一个Effect组件, 并挂在Effect Child Layer身上 /// </summary> public static CEffect Create(string meta, IGameplayAbilityUnit owner) { CEffect eff = null; CEffectMeta emeta = CEffectMetaManager.GetMeta(meta); if (owner == null) { Debug.LogError("We can not get GameObject which effect attach on " + meta); return(null); } GameObject go = owner.EffectLayer; switch (emeta.Type) { case CEffectMeta.EffectType.LaunchMissle: eff = go.AddComponent <CEffectLaunchMissile>(); eff.EffectName = meta; break; case CEffectMeta.EffectType.Damage: eff = go.AddComponent <CEffectDamage>(); eff.EffectName = meta; break; case CEffectMeta.EffectType.ApplyBehaviour: eff = go.AddComponent <CEffectApplyBuff>(); eff.EffectName = meta; break; case CEffectMeta.EffectType.IssueOrder: eff = go.AddComponent <CEffectIssueOrder>(); eff.EffectName = meta; break; case CEffectMeta.EffectType.EnumArea: eff = go.AddComponent <CEffectEnumArea>(); eff.EffectName = meta; break; case CEffectMeta.EffectType.EffectSet: eff = go.AddComponent <CEffectSet>(); eff.EffectName = meta; break; } return(eff); }
//解析 查询效果 private void ParseEffect_Area(XmlElement root) { string str = string.Empty; var meta = new CEffectEnumAreaMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "WhichUnit", "value", ref str); meta.WhichUnit = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodeAttr(root, "ImpactLocation", "value", ref str); meta.ImpactLocation = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodeAttr(root, "Radius", "value", ref meta.Area.Radius); m_xreader.TryReadChildNodeAttr(root, "ImpactEffect", "value", ref meta.Area.Effect); CEffectMetaManager.AddMeta(meta); }
//解析发射导弹的数据 private void ParseEffect_LaunchMissle(XmlElement root) { string str = string.Empty; var meta = new CEffectLaunchMissileMeta(root.GetAttribute("id")); m_xreader.TryReadChildNodeAttr(root, "WhichUnit", "value", ref str); meta.WhichUnit = CAbilityUtil.GetLocation(str); m_xreader.TryReadChildNodeAttr(root, "LaunchLocation", "value", ref str); // meta.LaunchVFX.LocationValue = CAbilityUtil.GetLocation(str); // m_xreader.TryReadChildNodeAttr(root, "LaunchLocation", "prefab", ref meta.LaunchVFX.Prefab); m_xreader.TryReadChildNodeAttr(root, "ImpactLocation", "value", ref str); // meta.ImpactVFX.LocationValue = CAbilityUtil.GetLocation(str); // m_xreader.TryReadChildNodeAttr(root, "ImpactLocation", "prefab", ref meta.ImpactVFX.Prefab); m_xreader.TryReadChildNodeAttr(root, "Missile", "value", ref meta.MisslePrefab); m_xreader.TryReadChildNodeAttr(root, "Movers", "Link", ref meta.Mover); m_xreader.TryReadChildNodeAttr(root, "Speed", "value", ref meta.MissileSpeed); m_xreader.TryReadChildNodeAttr(root, "Slerp", "value", ref meta.Slerp); CEffectMetaManager.AddMeta(meta); }