‫Merhaba ve hoş geldiniz.
‫Bu derste, Blueprint Olay grafiğimizde neler olup bittiğini kolayca okuyabilmemiz ve anlayabilmemiz
‫için plan karmaşamızı alıp düzgün bir şekilde fonksiyonlar halinde düzenleyeceğiz.
‫Şimdi bunu nasıl yapacağımızı görelim.
‫Şimdi, olay grafiğimizi yakınlaştırırsak, çok gürültülü olmaya başladığını görebiliriz.
‫Ayrıca hiçbir şeye bağlı olmayan birkaç düğüm de görebiliyorum.
‫Sileceğim bir get düğümü var, bir varlık, M0 düğümü, ancak çok gürültülü olduğunu görebilirsiniz.
‫Burada neler olduğunu anlamak zorlaşıyor.
‫Şimdi, insanların yaptığı tipik bir çözüm şöyle demek: Buradaki düğüm bloğu tamamen mermiyi ortaya çıkarmakla
‫ilgili.
‫Böylece bunları seçebilirim.
‫C tuşuna basabilirim ve bunun etrafına yorum bloğu adı verilen bir blok koyacaktır.
‫Ve sonra spawn projectiles yazabilirim ve bu bana o kod bloğunun ne yaptığını bildirir.
‫Bu kesinlikle kodunuzu düzenlemenin bir yoludur.
‫Ancak, bence bu en iyi yol değil ve bunu yapmak için fonksiyon adı verilen daha iyi araçlarımız var.
‫Peki işlevler nelerdir?
‫Fonksiyonlar plan bloklarını yürütür ve oyunlarımızın bir şeyler yapmasını sağlar.
‫Unreal Real tarafından sağlanan birçok düğüm aslında zaten işlevdir.
‫Bunlarla karşılaştık.
‫Örneğin spawn actor mermi düğümümüze gidip yakınlaştırdığınızda, bu bir fonksiyondur.
‫İmpuls eklemeye baktığımızda, bu aslında bu düğümlerin çoğu için bir işlevdir, hatta bir yürütme
‫pimi olmayan ve mavi olmayan ileri aktif vektör gibi şeyler de bir işlevdir,
‫çünkü sol üstte işlev anlamına gelen küçük bir f sembolü vardır, ancak Unreal'in sağladığı işlevlerle
‫sınırlı değiliz.
‫Kendi fonksiyonlarımızı da oluşturabiliriz ve bunu yapmak gerçekten çok kolaydır.
‫Blueprint'te.
‫Düzenli kalmamızı ve kod bloklarını yeniden kullanmamızı sağlarlar.
‫Yani bu bir yorumdan daha iyidir çünkü bir yorumu kopyalayıp yapıştırmanız gerekir.
‫Oysa bir fonksiyon, bir kod bloğunu birden fazla kullanım yeri arasında paylaştırmamızı sağlar.
‫Şimdi bunun gibi bir şeyi nasıl bir kod bloğuna dönüştürebileceğimize bir göz atalım.
‫Öncelikle yorum bloğunu silebiliriz, çünkü bunun gerekli olduğunu düşünmüyorum.
‫Bunun yerine, get player'dan impulse eklemeye kadar tüm düğümleri seçeceğim, üzerlerine sağ
‫tıklayacağım ve collapse to function'ı seçeceğim.
‫Bu da yeni bir blok oluşturur ve daha önce orada bulunan tüm düğümlerin yerini alır.
‫Şimdi bu işleve sol taraftaki bölmede görebileceğiniz bir ad vereceğim.
‫Planım bölmesindeki işlev bölümünde yeni bir işlev oluşturdu ve otomatik olarak yeniden adlandırmam için
‫seçili hale getirdi çünkü bu işlevleri kesinlikle yeniden adlandırmalıyız ve buna
‫spawn projectile adını vereceğim.
‫Ve iyi bir adlandırma program için kesinlikle hayati önem taşır çünkü kod esasen iletişimle ilgilidir.
‫Ne yazdığımızı anlayabilmek için kendimizle iletişim kurmaya çalışıyoruz.
‫Gelecekte kendimizle iletişim kurmaya çalışıyoruz.
‫Bu projeye geri döndüğümüzde, onu neden belli bir şekilde yazdığımızı unuttuk.
‫Ekipler halinde çalıştığınızda, ekibinizin geri kalanıyla da iletişim kurmaya çalışıyorsunuz.
‫Bazıları kod kalitesi için iyi bir ölçütün dakika başına ne kadar olduğu olduğunu söyler.
‫Yani bir kod parçasını okurken dakikada 50 kez "Bu da nesi?" diyorsanız, bu oldukça kötü bir koddur; eğer
‫kodu okurken dakikada sadece bir ya da iki kez "Bu da nesi?" diyorsanız, bu muhtemelen
‫oldukça iyi bir koddur ve her zaman bir şekilde hex'e ulaşırsınız.
‫Bu yüzden sadece işlevlerinin sayısını azaltmaya çalışıyoruz.
‫En önemlisi, işlevleri fiil olarak adlandırmaya eğilimliyiz.
‫Bu kuralın daha sonra bahsedeceğimiz bazı istisnaları vardır, ancak çoğunlukla işlevler bir şeyler
‫yapan şeylerdir.
‫Bu yüzden sözcükler kullanıyoruz ve bu işlevi nasıl adlandıracağınızdan emin değilseniz, bir ekipte çalışıyorsanız, başka biriyle
‫konuşabilir ve onlara bu işlevi nasıl adlandırmanız gerektiğini düşündüklerini ve onlara ne tür şeylerin
‫mantıklı geldiğini sorabilirsiniz.
‫Çoğu zaman bir sorunun içine o kadar gömülmüş olursunuz ki, bu sorun hakkında nasıl konuşacağınızı düşünemezsiniz.
‫Kendinize şu soruyu soruyor olabilirsiniz: Peki, bu spawn projectile fonksiyonunu oluşturduğumda tüm kodlarım nereye
‫gitti?
‫Bu işlevin gerçekte nasıl uygulandığına ilişkin ayrıntılara olay grafiğinde çift tıklayarak veya Planlarım
‫sekmesinde üzerine tıklayarak ya da Planlarım sekmesinde çift tıklayarak geri dönebilirsiniz.
‫Ve tüm düğümlerimizin hala burada yerleşik olduğunu görebilirsiniz, sadece şimdi ayrı bir sekmedeler,
‫böylece olay grafiği sekmenize geri dönebilir veya sadece bu işlevi gösteren Spawn projectile sekmesine
‫dalabilirsiniz.
‫Ve burada yeni bir düğüm olduğunu görebilirsiniz, bu küçük mor düğüm, fonksiyonumuza giriş noktasıdır.
‫Bu, fonksiyon başladığında yapmamız gereken şeyin bu olduğunu söyler.
‫Bu sadece bir giriş noktası.
‫Ve her çağrıldığında, bu düğüm tetiklenecek ve fonksiyonumuzun içindeki diğer tüm düğümleri tetikleyecektir.
‫Olay grafiğine geri dönersek.
‫Uzaklaştırmak, belki düğümlerimizi biraz bir araya getirmek.
‫Artık düğüm grafiğimizi çok daha küçük ve okunması kolay hale getirdik.
‫Sanırım burada fonksiyonları çekip çıkarmamız ve bazı şeyleri değiştirmemiz için birkaç aday daha var.
‫Bunlardan biri de cephaneyi bastığımız yer olabilir.
‫Yani bu durumda, cephane basmak iki yerde yaptığımız bir şey.
‫Bunu oyuna başlarken yapıyoruz ve spawn projectile'da yapıyoruz.
‫Ve sonra diğer yer, diğer şey, bir fonksiyona çıkarabileceğimiz işlevsellik parçası, bunun
‫yerine bir cephane azaltma fonksiyonuna koyabileceğimiz cephaneyi azalttığımız yer olacaktır.
‫Bu yüzden size meydan okumadan hemen önce, dönüşüm düğümünü ve spawn mermisinden sonraki dizgi düğümünü
‫silmek istiyorum çünkü bu işleri karmaşıklaştıracak.
‫İşlevselliği yukarıdan kopyalamak istiyorum, böylece ikisi de tamamen aynı görünecek.
‫Dolayısıyla, Begin Play'den üç düğümü kopyalayıp aşağıya yapıştırırsak ve yürütme pinlerini bağlarsak, burada tamamen aynı düğüm
‫setine sahip olduğumuzu, ikisi arasında aynı işlevselliğe sahip olduğumuzu ve bunu bir fonksiyona
‫çıkarmaya geldiğimizde hiçbir karışıklık olmadığını görebilirsiniz.
‫Bu yüzden sizi daha fazla işlev oluşturmaya davet ediyorum.
‫Yapmanızı tavsiye edeceğim ilk şey cephaneyi azaltmaktır.
‫Yani cephanenin azaltılmasıyla ilgili üç düğümü alıp bunları bir fonksiyona dönüştürmek ve onlara
‫bir isim vermek.
‫İkincisi ise baskı cephanesi.
‫Böylece cephaneyi alma, dönüştürme ve yazdırma işlevlerini tek bir fonksiyonda
‫toplayacaksınız.
‫Ve cephane yazdırdığımız iki alan olduğu için, bunlardan birini silip yerine işlevi getirmek
‫isteyebilirsiniz; bunu planım bölmesinden sürükleyerek yapabilirsiniz.
‫Ve son olarak birkaç hoş geldiniz mesajımız var, hoş geldiniz mesajı düğümlerinin çıktısı.
‫Bunları bir baskıya dönüştürebilirsiniz.
‫Hoş geldiniz mesajları işlevi de vardır.
‫Videoyu duraklatın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden önce azalan cephanemizi çıkaracağız.
‫Yani buna dahil olan üç düğüm var.
‫Fonksiyonu sağ tıklayarak daraltacağız, sonra ona Cephane Azalt diyeceğiz ve bu oldukça basit.
‫Yani mermiyi ortaya çıkarıyoruz, cephaneyi azaltıyoruz ve sonra cephaneyi basıyoruz.
‫Şimdi üç düğümü, get convert ve print string'i alalım ve sağ tıklayıp collapse to function'a
‫tıklayıp bunu print ammo olarak çağıralım.
‫Şimdi dediğim gibi, bu işlevsellik iki yerde tekrarlanıyor, bu yüzden begin play'de bunu yaptığı
‫yeri sileceğiz ve sadece fonksiyonlar listemizden print ammo'yu sürükleyeceğiz ve yürütme pinlerini bağlayacağız,
‫böylece print string'imizden sonra çalışacak.
‫Bu da beni oluşturmak istediğim son fonksiyona getiriyor, buna hoş geldin mesajlarını yazdır diyeceğimizi söylemiştik.
‫Bu yüzden to print strings after being in play collapse to fonksiyonunu seçeceğim ve ona print
‫welcome messages diyeceğim.
‫Ve bu düğüm, şimdi tüm düğümlerimizi yeniden düzenleyerek bunların tümünü tek bir ekranda tam olarak okumayı çok daha kolay hale
‫getirebiliriz.
‫Oyunumuzun işlevselliğini anlamanın artık çok daha kolay olduğunu görebilirsiniz çünkü hepsi tek
‫bir ekrana sığıyor ve benzer bir soyutlama ve anlama düzeyine güzel bir şekilde getiriliyor.
‫Ve bu, kendi kendini belgeleyen kod olarak adlandırdığımız şeydir, çünkü ne yaptığını açıklamak için yorumlara veya
‫belgelere ihtiyaç duymayan koddur.
‫İngilizce gibi okunuyor.
‫Harika bir şey.
‫Bir sonraki derste görüşürüz.