Exemple #1
0
    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);
    }
Exemple #2
0
    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;
    }
Exemple #3
0
	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;
		}
	}
Exemple #4
0
    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);
    }