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); }