private SkillEffectView _GetEffectView(SkillEffectViewType type) { if (_skillEffectPool.ContainsKey(type)) { var queue = _skillEffectPool[type]; if (queue == null) { queue = new Queue <SkillEffectView>(); } if (queue.Count > 0) { return(queue.Dequeue()); } else { var oriView = _GetOriSkillEffectView(type); var obj = Instantiate(oriView.gameObject); var newView = obj.GetComponent <SkillEffectView>(); oriView.CopyTo(newView); return(newView); } } else { var queue = new Queue <SkillEffectView>(); _skillEffectPool.Add(type, queue); var oriView = _GetOriSkillEffectView(type); var obj = Instantiate(oriView.gameObject); var newView = obj.GetComponent <SkillEffectView>(); oriView.CopyTo(newView); return(newView); } }
public void Init(SkillEffectViewType type, Transform transform, Action <SkillEffectView> disableAction, bool isOverTime = false, bool ballistic = false) { Type = type; _defaultRoot = transform; _onDisableAction = disableAction; Ballistic = ballistic; _isOverTime = isOverTime; if (isOverTime) { _parallelCor = new ParallelCoroutines(); } }
private SkillEffectView _GetOriSkillEffectView(SkillEffectViewType type) { switch (type) { case SkillEffectViewType.FireBall: return(_fireBall); case SkillEffectViewType.FireBallExplosion: return(_fireBallExplosion); case SkillEffectViewType.GeneralHit: return(_hit); case SkillEffectViewType.IceExplosion: return(_iceExplosion); case SkillEffectViewType.MagicAura: return(_magicAura); } return(null); }