Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        private IEnumerator Delay()
        {
            yield return(new WaitForSeconds(delay));

            GameObjectPool.Recycle(gameObject);
        }