void Start()
 {
     this.particleSystemPool = new UnityObjectPool(HitParticleSystem, ParticleSystemPoolSize, IsParticlePoolItemAvailabile);
     this.audioSourcePool = new UnityObjectPool(this.gameObject, typeof(AudioSource), AudioSourcePoolSize, IsAudioSourcePoolItemAvailable);
     this.HitBubble.SetActive(false);
     this.hitBubblePool = new UnityObjectPool(HitBubble, HitBubblePoolSize, IsHitBubblePoolItemAvailable);
 }
 public ComboHitSequenceController(UnityObjectPool hitZonePool, UnityObjectPool bonusBubblePool, UnityObjectPool hitFeedbackBubblePool, GameObject boss, Canvas canvas, float baseHitZoneZPosition)
 {
     this.hitZonePool = hitZonePool;
     this.bonusBubblePool = bonusBubblePool;
     this.hitFeedbackBubblePool = hitFeedbackBubblePool;
     this.boss = boss;
     this.canvas = canvas;
     this.baseHitZoneZPosition = baseHitZoneZPosition;
 }
 private void InitSequenceController()
 {
     UnityObjectPool hitZonePool = new UnityObjectPool(ComboHitZone, ComboHitZonePoolSize, IsComboHitZonePoolItemAvailableCallback);
     UnityObjectPool bonusBubblePool = new UnityObjectPool(ComboBonusBubble, ComboBonusBubblePoolSize, IsComboBonusBubblePoolItemAvailableCallback);
     UnityObjectPool hitFeedbackBubblePool = new UnityObjectPool(HitFeedbackBubble, HitFeedbackBubblePoolSize, IsHitFeedbackBubblePoolItemAvailableCallback);
     hitSequenceController = new ComboHitSequenceController(hitZonePool, bonusBubblePool, hitFeedbackBubblePool, Boss, Canvas, ComboHitZone.transform.localPosition.z);
     hitSequenceController.OnHitZoneClicked += HitZoneClickedEventHandler;
     hitSequenceController.OnSequenceAchieved += SequenceAchievedCallbackEventHandler;
     hitSequenceController.OnSequenceTerminated += SequenceTerminatedEventHandler;
 }