Profiler aracı
- Oyun Geliştirme kursu
- Uzman
- Ders 1/47
- 4 dk
Profiler ile kare başına zaman dağılımını öğrenirsin.
Profiler aracı nedir?
Profiler, oyununun her karede harcadığı CPU, GPU ve bellek miktarını detaylı incelemeni sağlayan analiz aracıdır. Kod bloklarının çalışma sürelerini görmek için Profiler.BeginSample ve Profiler.EndSample kullanılır.
using UnityEngine.Profiling;
Profiler.BeginSample("DusmanGuncelleme");
DusmanlariGuncelle();
Profiler.EndSample();Bu sayede hangi fonksiyonun kare hızını (FPS) düşürdüğünü nokta atışı tespit edebilirsin.
CPU ve GPU darboğazları
Bir oyunda takılma yaşandığında darboğazın (bottleneck) nerede olduğunu bilmek gerekir. CPU süreleri yüksekse aşırı oyun mantığı, fizik hesaplaması veya çok fazla draw call vardır; GPU süreleri yüksekse karmaşık shader'lar veya aşırı piksel boyaması (overdraw) vardır.
// 60 FPS hedefinde her karenin 16.6 ms altinda bitmesi gerekir:
// CPU Suresi + GPU Suresi <= 16.6msProfilleme yapmadan rastgele optimizasyon yapmak genellikle gereksiz zaman kaybına yol açar.
Uygulama Kare süresi ve darboğaz raporla
Verilen cpuTime ve gpuTime değerlerini toplayarak total süreyi hesapla. Süresi büyük olan tarafı darboğaz olarak belirleyip Console.WriteLine ile ekrana yazdır.
Başlangıç kodu
using System;
class ProfilerReport
{
static void Main()
{
float cpuTime = 18.4f;
float gpuTime = 9.2f;
// CPU ve GPU surelerini topla, buyuk olani darbogaz olarak yazdir
}
}Örnek çözüm
using System;
class ProfilerReport
{
static void Main()
{
float cpuTime = 18.4f;
float gpuTime = 9.2f;
float total = cpuTime + gpuTime;
string bottleneck = cpuTime > gpuTime ? "CPU" : "GPU";
Console.WriteLine($"Kare: {total:F1}ms - Darbogaz: {bottleneck}");
}
}Beklenen çıktı
Kare: 27.6ms - Darbogaz: CPU
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Profiler.BeginSample ve Profiler.EndSample metodlarının temel işlevi nedir?
- Kamera görüş açısındaki poligon sayısını yarıya indirmek
- Sahnedeki tüm aktif nesneleri bellekten silmek
- Belirli bir kod bloğunun CPU zaman çizelgesindeki süresini etiketleyip ölçmek Doğru cevap
- Oyunun ekran çözünürlüğünü dinamik olarak artırmak
Açıklama: BeginSample ve EndSample çifti, aralarındaki kodun Profiler CPU hiyerarşisinde özel bir etiket altında görünmesini sağlar.
2 Örnekleme başlat
UnityEngine.Profiling.Profiler.____("FizikHesaplama");
UnityEngine.Profiling.Profiler.BeginSample("FizikHesaplama");
Açıklama: Profiler sınıfında özel zamanlama bloğu BeginSample ile başlatılır.
3 Profiler kavramları
| Kavram | Anlamı |
|---|---|
Profiler |
Kare süresi ve kaynak kullanımını izler |
CPU Usage |
Kod mantığı ve fizik yükünü gösterir |
GPU Usage |
Piksel ve gölgelendirici yükünü gösterir |
Profiler.EndSample() |
Ölçülen örnek bloğunu sonlandırır |