//创建一个特效 public T CreateEffectByName <T>(string effectName, EffectPlayType playType) where T : EffectController { effectName = effectName.ToLower(); if (!effectDic.ContainsKey(effectName)) { UtilityHelper.LogError(string.Format("Create effect by name error! -> {0}", effectName)); return(null); } EffectController effect = effectDic[effectName].Get(); if (effect != null && effect is T) { if (effect is T) { //成功创建了特效 effect.playType = playType; #if UNITY_EDITOR effect.name = effect.effectName; #endif return((T)effect); } else { UtilityHelper.LogError(string.Format("Create effect by name error! Type error -> {0},{1}", effectName, effect.GetType().ToString())); ReturnEffect(effect); } } return(null); }
public void SetEffect(EffectPlayType pType, EffectType etype, int value, int turn = 0, Target target = null, int cost = 0, TriggerType trigger = TriggerType.None, GameObject animEffect = null) { if (etype == EffectType.AttackPower || etype == EffectType.SkillPower) { SetPower(etype, value); return; } CardEffect effect; switch (pType) { case EffectPlayType.triggerEffect: effect = new TriggerEffect() { TriggerType = trigger }; break; case EffectPlayType.staticEffect: effect = new StaticEffect(); break; case EffectPlayType.playEffect: effect = new PlayEffect(); break; case EffectPlayType.activeEffect: effect = new ActiveEffect(cost); break; case EffectPlayType.none: default: effect = new CardEffect(); break; } //カード効果に応じてアニメーション設定 if (animEffect == null) { switch (etype) { case EffectType.CostAdd: case EffectType.UnitCostAdd: case EffectType.SkillDamageAdd: case EffectType.AttackAdd: case EffectType.AttackTime: animEffect = null; break; case EffectType.CardDest: case EffectType.RandCardDest: break; case EffectType.CardDraft: case EffectType.CardDraw: case EffectType.GetDisZoneCard: case EffectType.CardUnDraft: case EffectType.GetDispCard: break; case EffectType.Counter: break; case EffectType.Damage: animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_MAGICK_FIRE); break; case EffectType.Heal: animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_HEAL); break; } } effect.effectState.Add(new EffectState(etype, value, turn, target, animEffect)); Effect.Add(effect); }