//添加一个特效到缓存池 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); }
public void Init(conf_effect conf) { this.conf = conf; ps = transform.GetComponent <ParticleSystem>(); gameObject.SetActive(false); Stop(); }
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); } } }
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); }
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); }
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); }