Unity’de Command Pattern Kullanımı
Merhaba, bu yazımda unity ile geliştirdiğim Color Blocks oyunumda command patterni nasıl kullandığımı anlatacağım.
İlk olarak oyunda command patterni nasıl kullandığımı, nerede ihtiyaç duyduğumu açıklamak istiyorum.
Oyun içerisinde bloklar var ve oyuncunun amacı bu blokları sağa sola sürükleyerek bütün boşlukları doldurmak. Blokların sağa, sola, yukarı ve aşağı sürüklenmesi birer hareket komutu ve bu komutları oyun içerisinde gerektiğinde geri alabilmeliyim. Geri alabilme işlemi için de bütün komutlarımın kayıtlı tutulması gerekmekte.
Command Patternin bize yardımcı olduğu nokta ise eylemleri birer komut nesnesi olarak tutması. Komutları oluştururken gerekli parametreleri verdikten sonra ilgili komutu çalıştırmak için tek yapmamız gereken execute metodunu çağırmak. Komutlar nesne oldukları için istediğimiz gibi onları saklayabiliyoruz.
İlk olarak tüm hareket komutlarını ICommand
interfac’inden implemente ediyoruz. ICommand
interface’imiz ise içerisinde void
tipinde Execute
ve Undo
metotlarına sahip.
Oluşturacağımız hareket komutlarını ICommand
interfaceinden implemente edeceğimiz için komutun yapması gereken işlemleri Execute
metodunun altında yapacağız. Undo
metodunda ise yaptığımız işlemlerin tersini.
Oluşturduğumuz komutun constructerında eylemi gerçekleştirmek için kullanacağımız parametreleri alıyoruz.
Son olarak tüm komutlarımızı tutacağımız ve komutları geri alabilmek için CommandManager
sınıfımızı oluşturuyoruz. Sınıfımızın içerisinde ICommand
tipinde Stack
oluşturarak eklenen komutları burada saklıyoruz.
AddCommand
ile parametreden gelen komutu stacke ekliyoruz. UndoCommand
ile komutu stackten çekerek Undo
metodunu çağırarak yaptığımız işlemi geri alıyoruz.
Uygulama içerisinde kullanımı için command nesnesi oluşturuyoruz ve AddCommand
ile stacke ekliyoruz. command.Execute()
ile oluşturduğumuz komutu çağırıyoruz. Eğer yaptığımız eylemi geri almak istersek UndoCommand()
ile geri alıyoruz.
Sonuç
Kaynak:https://learn.unity.com
Oyun:Color Blocks