Unity Çerez Ders: WaitForSeconds Objelerini Yeniden Kullanmak (Obje Havuzu)

Yayınlandı: 14 Eylül 2020 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde

Merhabalar,

Unity‘deki coroutine‘lerde yield return new WaitForSeconds(1f); veya yield return new WaitForSecondsRealtime(1f); sıklıkla kullanılan komutlardır. Ancak bu satırlar her çalıştığında yeni bir WaitForSeconds objesi için bellek ayrılır (allocation). Bunun önüne geçmek için, obje havuzu pattern’inden faydalanan basit bir script yazdım.

Yapmanız gereken, projenizde BetterWaitForSeconds adında yeni bir C# script oluşturmak ve script’in içeriğini şuradaki kodla değiştirmek: https://gist.github.com/yasirkula/5cd2681d0cfdbf6ed4a369e1664cfb98

Ardından coroutine’lerinizde yield return BetterWaitForSeconds.Wait(1f); veya yield return BetterWaitForSeconds.WaitRealtime(1f); satırlarını kullanarak, otomatik olarak obje havuzundan faydalanan WaitForSeconds objeleri ile çalışabilirsiniz.

Diğer derslerde görüşmek üzere!

yorum
  1. Yasir Sarıbaş dedi ki:

    Hocam konu başlığından alakasız olacak fakat bir sorum var. Rigidbody ile hareket ettirdiğim iki objem var ve bunlar aynı yolu izlemelerine rağmen girdikleri çekim alanlarında(içerisine giren objelere kuvvet uygulayan collider’lar) farklı oranlarda itmeye maruz kalıyorlar yani aynı rotayı izlemiyorlar. Objelerden biri v hızında t timescale’inde (oyun akışı hızında) ve f kadar kuvvete maruz kalırken diğeri 500 v hızında 0.1 t’de ve 500 f kuvvete maruz kalıyor. Rigidbody’ dynamic şeylerini felan aktif ettim yada az kuvvete maruz kalan objemin kuvvet kodlarını döngülere koyarak tekrarlı yaptım (frame başına tek 100f yerine 5 kere 20 f) fakat işe yaramadı. Sorun programda mı yoksa bende midir bi fikriniz var mı? Teşekkür ederim.

    • Yasir Sarıbaş dedi ki:

      Yada fiziksel kurallara maruz kalacak bir objenin harekete geçmeden izleyeceği yolu tespit etmenin farklı bir yolur var mıdır?

    • yasirkula dedi ki:

      Objenin izleyeceği yolu bulmak için Unity’nin sağladığı bir yöntem var (1, 2) ama bu yöntem sizin güç alanlarınızdan etkilenir mi onu bilmiyorum.

Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.