Unity 60 FPS'de performans düşmesi

Mucosoft

Kilopat
Katılım
5 Mart 2014
Mesajlar
2.445
Makaleler
3
Çözümler
21
Unity'de FPS limitlemesine sahip bir sistem geliştirdim. 300 FPS yaptım diyelim. Akıcı oynanıyor. 60 FPS yapınca sık sık FPS drop oluyor. 55-60 FPS arasında değişiyor ama akıcı olsa da bazen kasma hissi veriyor yani anlık FPS drop yaşanıyor. Bu neden oluyor? Nasıl çözülür?
 

Foxie

Kilopat
Katılım
26 Ocak 2014
Mesajlar
433
Çözümler
4
Yer
Istanbul
FPS limitlemesini nasıl yaptın? Fixeddeltatime değerin kaç?

Kodları nasıl yazdığında önemli, özellikle kamera takibi kodu varsa, Update ile mi takip ediyor lateupdate mi? Hareket kodların aynı şekilde ne zaman updateleniyor gibi bir sürü farklı değişken var akıcılık istiyorsan. FPS sadece ekrana gelen kare sayısı.
 
KS
KS
Mucosoft

Mucosoft

Kilopat
Katılım
5 Mart 2014
Mesajlar
2.445
Makaleler
3
Çözümler
21
FPS limitlemesini nasıl yaptın? Fixeddeltatime değerin kaç?

Kodları nasıl yazdığında önemli, özellikle kamera takibi kodu varsa, Update ile mi takip ediyor lateupdate mi? Hareket kodların aynı şekilde ne zaman updateleniyor gibi bir sürü farklı değişken var akıcılık istiyorsan. FPS sadece ekrana gelen kare sayısı.
[CODE lang="csharp" title="Update"] Time_Tick++;
if (Time_Tick > 30)
{
float Current = 0;
Current = (int)(1f / Time.unscaledDeltaTime);
AvgFPS = (int)Current;
string TxtDebug = AvgFPS.ToString() + " FPS\n";
TxtDebug += "X -> "+ Player.transform.position.x +" Y -> "+ Player.transform.position.y +" Z -> " + Player.transform.position.z;
Txt_Debug.text = TxtDebug;
Time_Tick = 0;
}[/CODE]
Karakter sistemi aşağıdaki paket.
Bu da diğer kodlar.
C#:
    void Start()
    {
        QualitySettings.vSyncCount = 0;
        Txt_FPSLimit.text = "60";
        Sld_FPSLimit.minValue = 16;
        Sld_FPSLimit.maxValue = 360;
        Sld_FPSLimit.value = 60;
    }
    public void UpdateSliderFPS()
    {
        if (Sld_FPSLimit.value == 0)
        {
            Txt_FPSLimit.text = "0";
        }
        else
        {
            Txt_FPSLimit.text = Sld_FPSLimit.value.ToString("##");
            Application.targetFrameRate = (int) Sld_FPSLimit.value;
        }
    }
 
Yukarı