Пример #1
0
        //创建一个特效
        public T CreateEffectByName <T>(string effectName, EffectPlayType playType)
            where T : EffectController
        {
            effectName = effectName.ToLower();
            if (!effectDic.ContainsKey(effectName))
            {
                UtilityHelper.LogError(string.Format("Create effect by name error! -> {0}", effectName));
                return(null);
            }
            EffectController effect = effectDic[effectName].Get();

            if (effect != null && effect is T)
            {
                if (effect is T)
                {
                    //成功创建了特效
                    effect.playType = playType;
#if UNITY_EDITOR
                    effect.name = effect.effectName;
#endif
                    return((T)effect);
                }
                else
                {
                    UtilityHelper.LogError(string.Format("Create effect by name error! Type error -> {0},{1}", effectName, effect.GetType().ToString()));
                    ReturnEffect(effect);
                }
            }
            return(null);
        }
Пример #2
0
        private EffectController CreateEffect(string effectName)
        {
            //创建特效
            //TODO:RES
            EffectController effect = null;

            foreach (var item in effects)
            {
                if (item.effectName == effectName)
                {
                    effect = item;
                    break;
                }
            }

            GameObject clone = ClonePrefab(string.Format("prefabs/effect/{0}.unity3d", effectName), effectName);

            if (clone != null)
            {
                effect = clone.GetComponent <EffectController>();
                effect.transform.SetParent(worldRoot);
                effect.transform.SetUnused(false, effectName);
            }

            return(effect);
        }
Пример #3
0
 //移除特效
 private void RemoveEffect()
 {
     if (selectedEffect != null)
     {
         EffectManager.Instance.ReturnEffect(selectedEffect);
         selectedEffect = null;
     }
 }
Пример #4
0
 public void ReturnEffect(EffectController effect)
 {
     if (effect != null)
     {
         effect.transform.SetParent(poolNode);
         effect.transform.SetUnused(false);
         pool.Return(effect);
     }
 }
Пример #5
0
        private EffectController CreateEffect()
        {
            EffectController effect = Instantiate <EffectController>(effectUnitModel);

            effect.transform.SetParent(poolNode);
            effect.transform.SetUnused(false);

            return(effect);
        }
Пример #6
0
 public void ReturnEffect(EffectController effect)
 {
     if (effect != null)
     {
         effect.transform.SetParent(worldRoot);
         effect.transform.SetUnused(false, effect.effectName);
         effectDic[effect.effectName.ToLower()].Return(effect);
     }
 }
Пример #7
0
        //快速创建一个在世界位置播放的定时回收特效
        public EffectController CreateWorldPositionEffect(string effectName, Vector3 worldPosition)
        {
            EffectController effect = CreateEffectByName <EffectController>(effectName, EffectPlayType.WorldPosition);

            if (effect != null)
            {
                effect.transform.position = worldPosition;
                effect.Play();
            }
            return(effect);
        }
Пример #8
0
 //添加特效
 private void AddEffect(EffectController effect)
 {
     if (selectedEffect == null)
     {
         effect.transform.SetParent(effectNode);
         effect.transform.Normalize();
         effect.gameObject.SetActive(true);
         effect.Color        = Color.cyan;
         effect.SortingLayer = unitRenderer.sortingLayerID;
         effect.SortingOrder = unitRenderer.sortingOrder + EGameConstL.OrderIncrease_BattleUnit;
         selectedEffect      = effect;
     }
 }
Пример #9
0
        //移除特效
        public void RemoveEffect(EffectController effect)
        {
            if (effect == null)
            {
                return;
            }

            //不做判断直接从列表中移除
            effectList.Remove(effect);

            //避免循环调用
            if (effect.effectHolder != null && effect.effectHolder.Equals(this))
            {
                effect.Return();
            }
        }
Пример #10
0
        //添加特效
        public void AddEffect(EffectController effect)
        {
            if (effectNode == null)
            {
                UtilityHelper.LogError("Add effect failed. Node is null.");
                return;
            }

            if (effect != null)
            {
                effect.transform.SetParent(effectNode);
                effect.transform.Normalize();
                effect.gameObject.SetActive(true);
                effect.effectHolder = this;
                effectList.Add(effect);
            }
        }
Пример #11
0
        private EffectController CreateEffect(string effectName)
        {
            //创建特效
            //TODO:RES
            EffectController effect = null;

#if UNITY_EDITOR
            string assetPath = "Assets/HalfSLG/Prefabs/Effect";
            effect = UnityEditor.AssetDatabase.LoadAssetAtPath <EffectController>(string.Format("{0}/{1}.prefab", assetPath, effectName));
            if (effect == null)
            {
                UtilityHelper.LogError(string.Format("Create effect {0} failed.", effectName));
                return(null);
            }
#endif
            effect = Instantiate <EffectController>(effect);
            effect.transform.SetParent(worldRoot);
            effect.transform.SetUnused(false, effectName);
            effect.Init();

            return(effect);
        }