public override void Dispose() { if (this.IsDisposed) { return; } base.Dispose(); GameObjectPool gameObjectPool = Game.Scene.GetComponent <GameObjectPool>(); foreach (Unit unit in this.m_IdUnits.Values) { gameObjectPool.Recycle(unit); } gameObjectPool.Recycle(MyUnit); this.m_IdUnits.Clear(); Instance = null; }
public override void Dispose() { if (this.IsDisposed) { return; } base.Dispose(); #if SERVER foreach (var VARIABLE in ChildrenUnit) { VARIABLE.Dispose(); } #elif !SERVER GameObjectPool gameObjectPool = Game.Scene.GetComponent <GameObjectPool>(); foreach (var VARIABLE in ChildrenUnit) { gameObjectPool.Recycle(VARIABLE); } #endif ChildrenUnit.Clear(); }
void PlayEffect() { PlayEffectBuffData playEffectBuffData = this.BuffData as PlayEffectBuffData; string targetEffectName = playEffectBuffData.EffectName; if (playEffectBuffData.CanChangeNameByCurrentOverlay) { targetEffectName = $"{playEffectBuffData.EffectName}{this.CurrentOverlay}"; //Log.Info($"播放{targetEffectName}"); } //如果想要播放的特效正在播放,就返回 if (this.TheUnitBelongto.GetComponent <EffectComponent>().CheckState(targetEffectName)) { return; } GameObjectPool gameObjectPool = Game.Scene.GetComponent <GameObjectPool>(); if (!gameObjectPool.HasRegisteredPrefab(targetEffectName)) { gameObjectPool.Add(targetEffectName, this.TheUnitFrom.GameObject.GetComponent <ReferenceCollector>() .Get <GameObject>(targetEffectName)); } Unit effectUnit = gameObjectPool.FetchEntity(targetEffectName); if (playEffectBuffData.FollowUnit) { effectUnit.GameObject.transform.SetParent(this.GetBuffTarget().GetComponent <HeroTransformComponent>() .GetTranform(playEffectBuffData.PosType)); effectUnit.GameObject.transform.localPosition = Vector3.zero; } this.TheUnitBelongto.GetComponent <EffectComponent>() .Play(targetEffectName, effectUnit); }
private IEnumerator Delay() { yield return(new WaitForSeconds(delay)); GameObjectPool.Recycle(gameObject); }