Parçacık Sistemi: Etkin Kullanım İpuçları ve Performans

Parçacık sistemi (particle system), ateş, duman, yağmur veya patlamalar gibi binlerce küçük öğeyi verimli şekilde yönetir. Yanlış ayarlanırsa oyun donabilir; doğru kullanırsa görüntü çarpıcı olur.

Saniyede kaç parçacık oluşturulacağını belirler. Çok yüksek ayarlamak FPS düşürür.

1ParticleSystem ps = GetComponent<ParticleSystem>();
2var emission = ps.emission;
3emission.rateOverTime = 50; // Saniyede 50 parçacık

Çıktı: Sabit, kontrollü yayın hızı. Düşük değer = hafif etki, yüksek = yoğun.

Her parçacık ne kadar süre görünür kalacak. Kısa = hızlı kaybolma, uzun = kalıcı görüntü.

1var main = ps.main;
2main.startLifetime = 2f; // 2 saniye yaşar

Aynı anda ekranda olabilecek maksimum parçacık. Bu sınırı aşarsa eski parçacıklar silinir.

1var main = ps.main;
2main.maxParticles = 1000; // En fazla 1000 parçacık

Parçacık sistemini yeniden oluşturmak pahalıdır. Önceden oluştur, devre dışı bırak, gerekince aç.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1ParticleSystem ps = Instantiate(particlePrefab);
2ps.gameObject.SetActive(false);
3
4// Kullanırken:
5ps.gameObject.SetActive(true);
6ps.Play();
7
8// Bittikten sonra:
9StartCoroutine(DisableAfterDelay(ps, 3f));
10
11IEnumerator DisableAfterDelay(ParticleSystem p, float delay) {
12yield return new WaitForSeconds(delay);
13p.gameObject.SetActive(false);
14}

- Billboard: En hızlı, standart seçim
- Stretched Billboard: Hızlı hareket eden parçacıklar için
- Mesh: Karmaşık şekiller, daha yavaş

Kameradan uzakta olan parçacık sistemini düşür.

1if (Vector3.Distance(Camera.main.transform.position, transform.position) > 50f) {
2emission.rateOverTime = 10; // Uzaksa az parçacık
3} else {
4emission.rateOverTime = 50; // Yakınsa normal
5}
6[/cod]
7
8## Pratik Örnek: Patlamaya Yanıt Ver
9
10[kod]
11public class ExplosionEffect: MonoBehaviour {
12public ParticleSystem explosionPS;
13
14public void Explode(Vector3 position) {
15explosionPS.transform.position = position;
16explosionPS.Play();
17}
18}

Kullanım:

1ExplosionEffect effect = GetComponent<ExplosionEffect>();
2effect.Explode(hitPoint);

- Emit rate ve lifetime dengeli tut
- Object pooling ile bellek tasarrufu sağla
- Uzak nesneler için LOD kullan
- Profiler ile FPS etkisini kontrol et

Doğru ayarlanmış parçacık sistemi oyunun görsel kalitesini ve performansını ikisi birden artırır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz