Unity’de animasyon denince çoğumuzun aklına ilk olarak DOTween gelir. Yıllardır kullanılan, güçlü ve esnek bir araç.
Ancak özellikle mobil projelerde veya aynı anda çok sayıda obje animasyonu olan senaryolarda, animasyonların performans maliyeti daha görünür hâle geliyor.
Bu yazıda:
Animasyonların performansı neden etkilediğini,
Garbage Collection (GC) ile animasyonlar arasındaki ilişkiyi,
PrimeTween’in neden “zero-allocation” odaklı bir çözüm sunduğunu,
DOTween ile temel farklarını,
temel seviyede ama teknik bir bakışla ele alacağız.
Amaç:
“Hangisi daha iyi?” tartışması değil,
“Hangi araç hangi problem için daha doğru?” sorusuna net cevaplar verebilmek.

Animasyon Performansı Neden Sorun Olur?
Unity’de performans problemleri çoğu zaman tek bir büyük hatadan değil, çok sayıda küçük maliyetin üst üste binmesinden kaynaklanır.
Animasyon tarafında bu maliyetler genellikle şunlardan gelir:
Runtime sırasında heap allocation
Bu allocation’ların birikmesi
Garbage Collection’ın devreye girmesi
GC sırasında frame’in kısa süreli durması
Bu duraksamalar özellikle:
Mobil cihazlarda
Match-3, grid, conveyor, hyper-casual gibi çok sayıda objenin hareket ettiği oyunlarda
net şekilde hissedilir.
FPS düşüşü yerine çoğu zaman oyuncu şunu hisseder:
“Oyun takılıyor gibi ama nedenini anlayamıyorum.”

Garbage Collection (GC) Kısa ve Net
GC’yi basitçe şöyle düşünebiliriz:
Oyun çalışırken heap üzerinde geçici objeler oluşur
Bu objeler birikir
GC devreye girer ve temizler
Temizlik sırasında ana thread kısa süreliğine durur
Bu durma:
16 ms yerine 25–30 ms frame süreleri
Mikro takılmalar
Özellikle animasyon sırasında hissedilen jitter
olarak geri döner.
İşte PrimeTween’in ana iddiası tam burada başlıyor.

PrimeTween Nedir?
PrimeTween, Unity için geliştirilmiş,
runtime sırasında heap allocation yapmayan (zero-allocation) bir tween kütüphanesidir.
Temel hedefi:
GC üretmeden
Stabil FPS ile
Özellikle gameplay animasyonlarını güvenli şekilde çalıştırmak
Temel Fark: DOTween vs PrimeTween
En önemli fark, kütüphanelerin tween’leri nasıl temsil ettiğidir.
Yapısal Karşılaştırma
| Özellik | DOTween | PrimeTween |
|---|---|---|
| Tween tipi | class | struct |
| Bellek | Heap | Stack / native |
| GC riski | Var | Yok |
| Runtime allocation | Yapabilir | Yapmaz |
| Mobil odak | Orta | Yüksek |
Bu fark küçük gibi görünür ama çok sayıda animasyon söz konusu olduğunda belirleyici olur.

Basit Hareket Örneği
DOTween
transform.DOMoveX(10f, 1f);
Bu kod:
Bir tween objesi oluşturur
Heap allocation yapabilir
GC riski taşır
Tek bir kullanımda sorun değildir.
Ama bu kodu yüzlerce obje için, sürekli çağırdığınızda maliyet birikir.
PrimeTween
Tween.PositionX(transform, 10f, 1f);
Bu kod:
Allocation yapmaz
GC üretmez
Fire-and-forget çalışır
Aynı işi yapar,
ama runtime maliyeti farklıdır.
Completion Callback Farkı
Performansın genellikle gözden kaçan bir diğer noktası: closure allocation.
DOTween
transform.DOMoveX(10f, 1f)
.OnComplete(() => OnMoveCompleted());
Bu kullanım:
Lambda oluşturur
Closure allocation riski taşır
GC baskısını artırabilir
PrimeTween
Tween.PositionX(transform, 10f, 1f)
.OnComplete(this, t => t.OnMoveCompleted());
Bu yaklaşım:
Allocation yapmaz
Closure üretmez
GC tetiklemez
Aynı davranış, farklı maliyet.
“Tek Kullanımlık Tween” Felsefesi
PrimeTween’de tween’ler:
Oluşturulur
Çalışır
Biter
Ve yeniden kullanılmaz
Bu bilinçli bir tasarım kararıdır.
Avantajları:
Tween cache’leme ihtiyacı yok
SetAutoKill(false)gibi ayarlara gerek yokOnDestroyiçinde manuelKill()zorunluluğu yokNull reference ve lifecycle hataları azalır
Bu model özellikle:
Gameplay kodlarında
State karmaşası olan sistemlerde
daha güvenli bir yapı sunar.
Inspector ve Editör Tarafı
PrimeTween sadece kod tarafına odaklanmaz.TweenSettings<T> gibi yapılar sayesinde:
Duration
Ease
Delay
Loop
Direction
gibi değerler Inspector üzerinden ayarlanabilir.
Bu da:
Magic number kullanımını azaltır
Tasarımcıların animasyon tweak’lerini doğrudan yapabilmesini sağlar
Kod–tasarım bağımlılığını düşürür
Ancak bu özellik, performans kazanımının yanında gelen bir bonus olarak görülmelidir.

Ne Zaman PrimeTween?
PrimeTween özellikle şu senaryolarda öne çıkar:
Mobil oyunlar
Match-3, grid, conveyor sistemleri
Aynı anda çok sayıda gameplay objesi
FPS stabilitesinin kritik olduğu projeler
Ne Zaman DOTween Hâlâ Mantıklı?
DOTween hâlâ çok güçlüdür ve şu alanlarda avantajlıdır:
Karmaşık UI animasyonları
Menü geçişleri
Timeline hissi veren sekanslar
Editör araçları ve prototipleme
Bu yüzden konu:
“DOTween mi, PrimeTween mi?”
değil,
“Hangi animasyon nerede çalışıyor?”
sorusudur.
Sonuç
PrimeTween:
Zero-allocation yaklaşımı
GC üretmeyen yapısı
Basit ama bilinçli API tasarımı
ile performans odaklı animasyonlar için güçlü bir alternatiftir.
DOTween ise:
Esnekliği
Olgun ekosistemi
UI ve sekans tarafındaki gücü
ile hâlâ çok değerli bir araçtır.
İyi bir Unity geliştiriciyi ayıran şey:
Tek bir araca bağlı kalmak değil, Doğru aracı doğru problemde kullanabilmektir.





