/// <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);
    }
Esempio n. 2
0
    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;
        }
    }