/// <summary> /// 获得一个临时GameObject对象,并为其添加EffectsLifeCycle脚本管理其生命周期 /// </summary> /// <param name="templateObject">模板对象</param> /// <returns></returns> public static EffectsLifeCycle AcquireObject(EffectConditonalType type, GameObject templateObject = null, BattleState battleState = null, CharacterMono target = null, float during = -1, ParticleSystem particleSystem = null) { GameObject result = null; if (templateObject == null) { result = new GameObject(); } else { result = GameObject.Instantiate(templateObject); } EffectsLifeCycle effectsLifeCycle = result.AddComponent <EffectsLifeCycle>(); effectsLifeCycle.Init(type, battleState, target, during, particleSystem); return(effectsLifeCycle); }
public void Init(EffectConditonalType type, BattleState battleState = null, CharacterMono target = null, float during = -1, ParticleSystem particleSystem = null) { switch (type) { case EffectConditonalType.Auto: Assert.IsNotNull(particleSystem, "生成了一个Auto型生命周期的特效对象,但是没有为该对象赋值粒子特效系统"); conditional = new AutoConditional(particleSystem); break; case EffectConditonalType.BattleState: Assert.IsNotNull(battleState, "生成了一个Battle型生命周期的特效对象,但是没有为该对象赋值 battle 属性"); Assert.IsNotNull(target, "生成了一个Battle型生命周期的特效对象,但是没有为该对象赋值 target 属性"); conditional = new StateConditional(target, battleState); break; case EffectConditonalType.During: Assert.AreNotEqual <float>(-1, during, "生成了一个During型生命周期的特效对象,但是没有为该对象赋值 during 属性"); conditional = new DuringConditional(during); break; } }