private GameObject AddEffectImp(string effect_name, EffectEndCallBack effect_end_call_back = null) { GameObject effect_object = ObjectPoolManager.Instance().GetObject(effect_name); ParticleSystem[] all_particles = effect_object.GetComponentsInChildren <ParticleSystem>(); for (int i = 0; i < all_particles.Length; ++i) { all_particles[i].Play(); } ParticleEffectConfig particle_system_config = effect_object.GetComponent <ParticleEffectConfig>(); TimerManager.Instance().DelayCallFunc(delegate(float dt) { ParticleSystem[] all_particles_stop = effect_object.GetComponentsInChildren <ParticleSystem>(); for (int i = 0; i < all_particles.Length; ++i) { all_particles_stop[i].Stop(); } ObjectPoolManager.Instance().ReturnObject(effect_name, effect_object); if (effect_end_call_back != null) { effect_end_call_back.Invoke(); } }, particle_system_config.effect_duration); return(effect_object); }
public void AddEffect(Vector3 world_position, string effect_name, EffectEndCallBack effect_end_call_back = null) { GameObject effect_object = AddEffectImp(effect_name, effect_end_call_back); effect_object.transform.SetParent(UnitManager.Instance().cache_root_effect_node, false); effect_object.transform.position = world_position; }
public void MakeEffect(List<string> strs, string res, EffectEndCallBack callback) { if (strs.Count < 2 || strs.Count > 3) { Debug.LogError("Do not support effects not between 2 and 3 (inclusive)"); return; } var effect = Instantiate(effectPrefab, transform) as GameObject; var animator = effect.GetComponent<Animator>(); for (int i = 0; i < strs.Count; ++i) { var childImg = effect.transform.GetChild(i).GetComponent<Image>(); childImg.sprite = CharImgManager.instance.imgDict[strs[i]]; } var resImg = effect.transform.GetChild(3).GetComponent<Image>(); resImg.sprite = CharImgManager.instance.imgDict[res]; var combBehav = effect.GetComponent<CombineEffectBehavior>(); combBehav.callback = callback; switch (strs.Count) { case 2: animator.Play("CombineTwo"); break; case 3: animator.Play("CombineThree"); break; } }
public void AddEffect(Transform node, string effect_name, EffectEndCallBack effect_end_call_back = null) { GameObject effect_object = AddEffectImp(effect_name, effect_end_call_back); effect_object.transform.SetParent(node, false); }