Tek duyarlıklı bir şamandıra kullanımından kaynaklanan zaman doğruluğu kaybı riski vardır .
97 gün boyunca en yakın saniyeye kadar hassasiyetini koruyacaktır . Ancak oyunlarda genellikle bir kare süresi sırasındaki doğruluğu önemsiyoruz.
Saniye cinsinden tek bir hassas yüzdürme süresi, yaklaşık 9 saat sonra milisaniye doğruluğunu kaybetmeye başlar .
Bu zaten, tek bir oyun oturumu için veya iş / okuldayken veya uyurken oyunun "AFK" ile çalışmasına izin verme ihtimalinin dışında değil. (Bu, bir oyunu test etmenin yaygın bir yolunun bir gecede çalıştırılması ve hala sabahları doğru şekilde oynamasını kontrol etmesinin bir nedenidir).
Oyunların tamamen kapatılmasından ziyade oyun oturumları arasında sıklıkla askıya alındığı ve devam ettirildiği modern konsollarda, kısa sürede oynanan oyunlarda bile 9 saat çalışma süresinin aşılması, oyunun gözünden “tek bir seans” için beklenmeyen bir durum değil.
Unity'nin deltaTime
, bir başka cevapta Peter'ın deneyleriyle ortaya çıkan yüksek hassasiyetli bir zaman kaynağından hesaplandığını varsayarsak , deltaTime
kare ölçekli zamanlamalara dayanmak göreceli olarak güvenlidir (sadece çok uzun süreler biriktirmek için deltaTime
değerleri toplayarak dikkatli olun - küçük artışlar ekleyin. daha büyük bir şamandıra, anlayışlı algoritmalarla telafi etseniz bile , kesin bir kayıp için klasik bir reçetedir ).
Yana fixedDeltaTime
Bunun yerine dinamik çerçeveye çerçeve değişmesini değil, set aynı değeri tutar, ayrıca tutarlılık kesin güvenceler almak için FixedUpdate zamanlama duyarlı davranışı koyabilirsiniz. deltaTime
bu yöntemlerde uygun sabit deltayı otomatik olarak döndürür. Sabit ve çerçeve güncellemeleri arasında bir vuruş sıklığı olsa da, enterpolasyon ile bunu düzeltebilirsiniz .
Kaçınılması gereken, bir zaman damgasını diğerinden çıkararak hesaplama sürelerini hesaplamaktır . Saatlerce oynadıktan sonra bu feci felaketlere yol açabilir ve bu sayede koşuya erken başladığınızdan çok daha az hassasiyet elde edersiniz. Zaman damgalarını karşılaştırmak sistemleriniz için önemliyse, System.Diagnostics.Stopwatch
bunun yerine diğer yöntemleri kullanarak kendi yüksek çözünürlüklü zaman değerinizi oluşturabilirsiniz Time.time
.