Unity 60 FPS'de performans düşmesi

Mucosoft

Kilopat
Katılım
5 Mart 2014
Mesajlar
2.034
Makaleler
3
Çözümler
17
Yer
Giresun
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

Hectopat
Katılım
26 Ocak 2014
Mesajlar
391
Çö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.034
Makaleler
3
Çözümler
17
Yer
Giresun
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ı.
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;
            }
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ı