Пример #1
0
    //添加一个特效到缓存池
    GameEffect CreateEffect(conf_effect effect)
    {
        Object obj = Resources.Load(effect.file_path);

        if (obj == null)
        {
            Debug.LogError("cant find file ! : " + effect.file_path);
        }
        if (effect.res_type == 1)
        {
            GameObject go = (GameObject)MonoBehaviour.Instantiate(obj);

            GameEffect ge = go.AddComponent <GameEffect>();
            ge.Init(effect);

            if (!effectPool.ContainsKey(effect.id))
            {
                effectPool.Add(effect.id, new List <GameEffect>());
            }
            effectPool[effect.id].Add(ge);

            return(ge);
        }
        return(null);
    }
Пример #2
0
    public void Init(conf_effect conf)
    {
        this.conf = conf;
        ps        = transform.GetComponent <ParticleSystem>();

        gameObject.SetActive(false);
        Stop();
    }
Пример #3
0
    public GameEffectManager()
    {
        //创建特效,加入到池里
        List <conf_effect> _conf = ConfigManager.confEffectManager.datas;

        for (int i = 0; i < _conf.Count; i++)
        {
            conf_effect conf = _conf[i];
            for (int j = 0; j < conf.repeat_count; j++)
            {
                CreateEffect(conf);
            }
        }
    }
Пример #4
0
    GameEffect CreateEffect(int effectid)
    {
        conf_effect _conf = ConfigManager.confEffectManager.GetData(effectid);
        Object      obj   = Resources.Load(_conf.file_path);

        if (obj == null)
        {
            Debug.LogError("cant find file ! : " + _conf.file_path);
        }
        if (_conf.res_type == 1)
        {
            GameObject go = (GameObject)MonoBehaviour.Instantiate(obj);
            go.transform.position = new Vector3(-999999, -999999, 0);
            GameEffect ge = go.AddComponent <GameEffect>();
            ge.Init(_conf);

            return(ge);
        }
        return(null);
    }
Пример #5
0
    GameEffect GetEffect(int effectid, Vector3 worldPos)
    {
        //对应池是否存在
        if (!effectPool.ContainsKey(effectid))
        {
            return(null);
        }

        //寻找空闲特效
        List <GameEffect> pool = effectPool[effectid];
        GameEffect        ret  = null;

        for (int i = 0; i < pool.Count; i++)
        {
            GameEffect eff = pool[i];

            if (eff.gameObject.activeSelf)
            {
                continue;
            }

            ret = eff;
            break;
        }

        //如果没有可用特效,则创建一个新的
        if (ret == null)
        {
            conf_effect conf = ConfigManager.confEffectManager.GetData(effectid);
            if (conf != null)
            {
                ret = CreateEffect(conf);
            }
        }

        return(ret);
    }
Пример #6
0
    public GameEffectManager()
    {
        //创建特效,加入到池里
        List <conf_effect> _conf = ConfigManager.confEffectManager.datas;

        for (int i = 0; i < _conf.Count; i++)
        {
            conf_effect conf = _conf[i];
            for (int j = 0; j < conf.repeat_count; j++)
            {
                GameEffect eff = CreateEffect(conf.id);
                if (eff != null)
                {
                    if (!effectPool.ContainsKey(conf.id))
                    {
                        effectPool.Add(conf.id, new List <GameEffect>());
                    }
                    effectPool[conf.id].Add(eff);
                }
            }
        }

        EventManager.Register(this, EventID.EVENT_CREATE_EFFECT);
    }