//创建一个特效 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); }
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); }
//移除特效 private void RemoveEffect() { if (selectedEffect != null) { EffectManager.Instance.ReturnEffect(selectedEffect); selectedEffect = null; } }
public void ReturnEffect(EffectController effect) { if (effect != null) { effect.transform.SetParent(poolNode); effect.transform.SetUnused(false); pool.Return(effect); } }
private EffectController CreateEffect() { EffectController effect = Instantiate <EffectController>(effectUnitModel); effect.transform.SetParent(poolNode); effect.transform.SetUnused(false); return(effect); }
public void ReturnEffect(EffectController effect) { if (effect != null) { effect.transform.SetParent(worldRoot); effect.transform.SetUnused(false, effect.effectName); effectDic[effect.effectName.ToLower()].Return(effect); } }
//快速创建一个在世界位置播放的定时回收特效 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); }
//添加特效 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; } }
//移除特效 public void RemoveEffect(EffectController effect) { if (effect == null) { return; } //不做判断直接从列表中移除 effectList.Remove(effect); //避免循环调用 if (effect.effectHolder != null && effect.effectHolder.Equals(this)) { effect.Return(); } }
//添加特效 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); } }
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); }