private void CreateWavePool()
    {
        GameObject projectilePrefab = AssetBundleCacher.Instance.LoadAndGetAsset("weapon", "WaveProjectileBox") as GameObject;

        for (int i = 0; i < 10; ++i)
        {
            ProjectileColiderBox newProjectile = Instantiate(projectilePrefab).GetComponent <ProjectileColiderBox>();
            newProjectile.transform.parent = transform;
            newProjectile.Initialize(projectileTrailColor, ReturnToPool);
            deactiveProjectilePool.Enqueue(newProjectile);
        }
    }
 public void Execute()
 {
     if (deactiveProjectilePool.Count > 0)
     {
         ProjectileColiderBox colBox = deactiveProjectilePool.Dequeue();
         colBox.Refresh(playerTransform);
         colBox.Fire(playerTransform.forward, 20f);
         activeProjectilePool.Add(colBox);
     }
     else
     {
         activeProjectilePool[0].ForceReturnToPool();
         Execute();
     }
 }
 private void ReturnToPool(ProjectileColiderBox projectile)
 {
     activeProjectilePool.Remove(projectile);
     deactiveProjectilePool.Enqueue(projectile);
 }