22 Aralık 2015 Salı

UNİTY 3D - Invoke() Fonksiyonu

Unity 3D ile Zamanlanan İşlemler

Unity de Invoke fonksiyonu belli işlemlerin yapılmasını zamanlamak için kullanılır.Yani istenilen fonksiyonu kendi belirlediğimiz zamana göre çağırır.

public GameObject nesne;
    void Start()
    {
        Invoke("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    } 

Burada Invoke içerisinde tırnak içine yazdığımız 1. parametre çağırılan fonksiyon yani "uret" ve 2. parametre ise bu sınıf çağırıldıktan 5 saniye sonra çağırılmasını sağlar. 

Burada uret fonksiyonu sadece 1 kere çağırıldı.Bunu sürekli belirli bir zaman aralığı ile çağırmak isteseydik eğer InvokeRepeating fornksiyonu çağırırız.

  public GameObject nesne;
    void Start()
    {
        InvokeRepeating("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    }
    

Bu şekilde sürekli çağıracaktır.en sona eklediğimiz parametre kaç saniyede bir çağırılacağını söyler.Fakat bunu durdurmak için en komut kullanmak gerekir.Bu komutun adı ise CancelInvoke() fonksiyonudur.Tek bir fonksiyon için durdurmak istiyorsak da CancelInvoke(uret) şeklinde kullanırız.

    public GameObject nesne;
    void Start()
    {
        InvokeRepeating("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            CancelInvoke();
        }
    }

Burada ise space tuşuna basana kadar üret space tuşuna basınca dur diyoruz.

7 Aralık 2015 Pazartesi

Design Patterns - Singleton

Design Patterns - Singleton


  Bir nesneden sadece 1 tane üretilmesini sağlayan tasarım kalıbıdır.2 adet kuralı vardır


  • Başka yerde üretilmediğinden emin ol.
  • Tek bir noktadan her yere erişim ver.
  Tek kullanıcılı bir otomasyon yaptığımızı düşünelim.Tek kullanıcı olduğundan profili tek yapar ve tüm para değerlerini orada tutmak isteyebiliriz.(Sadece bir örnek)

  Öncelikle başka yerde üretilip üretilmemesini kontrol etmek için yapılandırıcısını dışarıya kapalı hale getiririz.
  


class Profil
    {
        private static Profil profil = new Profil();

                   //Yapılandırıcı private
        private Profil() { }

    }

  Fakat bu şekilde bırakırsak bu nesne sadece içeride üretilebilir ve oda hiçbir işimize yaramaz.Bu bakımdan bu koda static bir erişim fonksiyonu ekliyoruz.


class Profil
    {
        private static Profil profil = new Profil();

                   //Yapılandırıcı private
        private Profil() { }

        //üretim fonksiyonu
        public static Profil getProfil()
        {
            return profil;
        }
    }

  Artık bu fonksiyona ulaşmak için yapılacak tek şey 
Profil a=Profil.getProfil(); deyip a ya profildeki nesne adresini atamak.Şuanda tüm şartları sağlıyor hem 1 tane üretiliyor hemde herkez aynı nesneyi kullanıyor.