‫Merhaba ve hoş geldiniz.
‫Bu derste kendi sınıf üye fonksiyonlarımızı uygulayacağız, platformu taşı ve platformu döndür.
‫Tartışmaları kabul edebilmeleri için onları nasıl ayarlayabileceğimizi göreceğiz.
‫Bu da kodumuzu biraz toparlamamıza yardımcı olacak.
‫İçeri dalalım ve bunun nasıl çalıştığını görelim.
‫Şimdiye kadar, bizim için zaten oluşturulmuş olan C++ fonksiyonlarını kullandık.
‫TIC V'yi işlevselliklerini yazma açısından büyük bir oyun içinde kullanıyoruz.
‫Ayrıca başkalarının bizim için yazdığı fonksiyonları da kullanıyoruz.
‫Bunlara aktif konum al ve isim al gibi isimler veriyoruz.
‫Şimdi kodumuzu düzenlemeye yardımcı olmak ve bu işlevleri küçük ve her şeyi çok daha okunaklı tutmak için yeni kendi
‫işlevlerimizi nasıl oluşturabiliriz?
‫Bölümün sonuna geldiğimizde temel yapı taşlarını zaten yerleştirmiş durumdayız.
‫C++ sözdizimi hakkında çok daha fazla şey anlıyoruz.
‫Bu yüzden yapmak istediğim şey, hareketli platformda sadece alım yapmamızı sağlayan yeni bir
‫işlev oluşturmak, diyelim ki platformu taşı.
‫Bunu neden yapmak isteyeyim ki?
‫Çünkü MOVE Platform adında böyle bir fonksiyon çağrısı yapabilmek, şu anda yapmaya çalıştığımız
‫şeyi gerçekten anlatıyor.
‫Teknoloji alanında pek çok şey yapıyoruz ve tüm bunları neden yaptığımızı tam olarak anlayamıyorum,
‫eğer teknolojiye girip bir göz atarsam ve Move platform yazan bir işlev görürsem, o zaman aniden tüm bu şeylerin
‫ne yapması gerektiğine dair bir bağlama sahip oluyorum ve bana neler olduğunu anlatmak
‫için tek bir yoruma ihtiyacım yok.
‫Ve bu, platformun döndürülmesi olasılığını da eklediğimizde özellikle
‫yararlı olacaktır.
‫Peki beyan fonksiyonlarını nasıl tanımlarız?
‫Bildirim kısmı başlık dosyasında yapılır.
‫Burada temel olarak C++'a bir uyarıda bulunuyoruz, şuna benzer bir fonksiyonumuz
‫olacak.
‫Ve sonra C++'da aslında fonksiyonu tanımladığımız yer var.
‫Ona vücudu veriyoruz, tam olarak C++ yapmasını söylüyoruz.
‫İşlev bu şekilde çalışır.
‫Şimdi bunu nasıl yapabileceğimize bir göz atalım.
‫Birkaç işlev örneğimiz var ve bunlar oyunda büyük rol oynadı.
‫Kene işaretimiz var ve başlık dosyamızdaki farklı bölümlere bakmamız için
‫iyi bir zaman.
‫Burada kamu ve korumadan bahsediliyor ve yine kamudan bahsediliyor.
‫Şimdi bu ne anlama geliyor?
‫Sonunda iki nokta bulunan bu anahtar kelimeler temel olarak erişilebilirliğin bir bölümünü tanımlar.
‫Bu işlevlere nereden erişilebilir?
‫Güvende olmanın normal olduğunu gördük.
‫Bu, bir F vektörü üzerinde çağırdığımız bir işlevdir, ancak bunu bir F vektörünün içinden değil, başka
‫bir sınıftan çağırıyoruz.
‫Bu da bu fonksiyonun erişilebilirliğinin herkese açık olması gerektiği anlamına gelir.
‫Şimdi korumayı bir dakikalığına bir kenara bırakacağız çünkü orada işler biraz daha karmaşık hale geliyor.
‫Ancak kullanabileceğimiz bir başka anahtar kelime türü daha vardır ki o da özeldir.
‫Bu yüzden tik işaretinden sonra özel anahtar kelimesini ekleyeceğim.
‫Bu bölümleri girintilemediğime ve sonuna bir kod ekleyeceğimize dikkat edin.
‫Bu da bir sonraki bölüme kadar gelecek olan her şeyin, buraya koyduğum bir sonraki anahtar
‫kelimenin özel olacağı anlamına geliyor.
‫Yani tüm bu değişkenleri aldık ve dedik ki, hey, başka hiçbir sınıfın bunlara dokunmasına izin
‫yok.
‫Ve bu genellikle en iyi uygulamadır.
‫Bu noktaya kadar bunu yapmadık çünkü sizin için işleri biraz fazla karıştırmak istemedim.
‫Ancak sınıflardaki değişkenler genellikle kendi işlerini yapmalıdır.
‫Nesne yönelimli programlamanın temel ilkelerinden biri, sınıfları kendi değişkenlerini yönetmeleri için
‫bırakmak ve onlara yalnızca sınıfın public olduğunu belirttiği işlevleri kullanarak erişmektir.
‫Burada yapacağımız şey, buraya birkaç özel fonksiyon daha eklemek olacak çünkü Platformu
‫Taşı gibi bir şeyin sınıf dışından çağrılmasını istemiyoruz.
‫Bunun kendi kene fonksiyonumuz tarafından yönetilmesini istiyoruz.
‫Peki özel bir işlevi nasıl tanımlarız?
‫Bunu özel bir bölüme koyduk.
‫Burada özel anahtar kelimemiz var.
‫Ancak bunu değişkenlerimizden sonra koyacağım ve dönüş türüyle başlayacağız.
‫Ve eğer fonksiyonumuz bir şey döndürmüyorsa, bu fonksiyondan bir dönüş olmadığını belirtmek için sadece
‫void yazarız.
‫Sonra ona bir fonksiyon adı veririz.
‫Böylece istediğimiz şey move platform oldu ve sonra bunun bir fonksiyon olduğunu belirtmek için parantezler açtık ve parantezleri
‫kapattık ve ardından satırı bitirmek için noktalı virgül koyduk ve tamam, işte bu kadar dedik.
‫Burada başlık dosyasında bildirmek istediğim fonksiyon ve yaptığı her şey budur.
‫Fonksiyonun şeklinin bu olduğunu, geri dönüşünün bu olduğunu, hangi parametreleri aldığını,
‫adını ve hangi sınıfa ait olduğunu söyler.
‫Şimdi, gerçekten bir uygulama vermek için, bunu C++ dosyasında tanımlamamız gerekir.
‫O zaman oraya gidelim.
‫Ve dosyanın sonunda, küme parantezlerinin hemen dışında, bunu yapacağımız yer burasıdır.
‫Dönüş türüyle tekrar başlıyoruz.
‫O zaman bu geçersiz olacaktır çünkü bir C++ dosyasının içindeyiz, bir sınıfın küme parantezlerinin içinde
‫değiliz.
‫Hareketli platform sınıfı içinden bir fonksiyon tanımlamaya çalıştığımızı söylemek için kapsam çözümleme operatörünü
‫kullanmamız gerekir.
‫Bu yüzden sınıfın adını yazıyoruz, yani hareketli bir platform, bir aktör olduğunu belirtmek için bir önek olduğunu
‫hatırlıyoruz.
‫Ardından iki nokta üst üste, iki nokta üst üste, kapsam çözümleme operatörünü kullanırız ve ardından
‫tanımladığımız fonksiyonun adını kullanırız, bu da MOVE platform'dur ve ardından başlık dosyasında yaptığımız gibi aynı parametre setini kullanırız.
‫Bu durumda, boş bir parametre setimiz vardı, bu yüzden sadece parantezlerimiz var.
‫Ve bu satırın sonuna noktalı virgül koymak yerine yeni bir satıra bir açılış küme parantezi ve buna karşılık
‫gelen bir kapanış küme parantezi koyuyoruz.
‫Ve fonksiyonumuzun kodunu koyduğumuz bu küme parantezlerinin arası harika.
‫Şimdi yapmak istediğim şey, burada sahip olduğumuz tüm bu işlevselliği anlatmaya çalışmak ve aslında yorumları
‫sileceğim çünkü artık onlara ihtiyacımız yok.
‫Bunlar bunu uygulamak için kullandığımız sözde kodlardı, ancak şimdi amacına hizmet ediyor.
‫Kod satırlarının ne yaptığını anlıyoruz.
‫MOVE platform işlevi dışındaki her şeyi TTIC'den alıp kopyalayacağım ve bunun yerine MOVE platform
‫işlevimize yapıştıracağım.
‫Yani bu hemen hemen aynı şekilde çalışmalıdır çünkü tick'e girdiğimizde move platform'u çağırırız ve o da
‫aynı kod parçasını çalıştırır.
‫Ancak şimdi bunu bir işlevde bir araya getirdik ve gelecekte okumamızı ve potansiyel olarak yeniden kullanmamızı kolaylaştırıyor.
‫Ancak bunu yaparsanız, bir sorun olduğunu fark edeceksiniz.
‫Delta zamanına erişiyoruz ve bu artık erişemediğimiz bir parametre çünkü tick'e aktarılan bir parametreydi.
‫Dolayısıyla, bunu elde etmek istiyorsak, fonksiyonumuzda bir parametreye sahip olmamız gerekir.
‫Dolayısıyla, parametreleri tanımladığımızda, bunu iki yerde yapmamız gerekir.
‫Tıpkı fonksiyonu tanımlarken yaptığımız gibi, başlık dosyasına geri dönüyoruz ve MOVE platform fonksiyonumuzun
‫parantezleri arasına giriyoruz.
‫Burası hangi parametreleri istediğimizi söylediğimiz yerdir ve tam olarak bir değişken tanımlamak gibidir.
‫Ona bir tür vermeniz ve bir isim vermeniz gerekir.
‫Bu yüzden bunun bir float tipi olacağını ve Delta Time olarak adlandırabileceğimizi söyleyeceğiz.
‫Aynı isim olmak zorunda değil.
‫Buna D diyebiliriz. T. buna zaman diyebiliriz.
‫Ancak aynı ismi vermek daha kolay çünkü o zaman burada ne geçmesi gerektiği okuyan herkes
‫için açık.
‫Daha sonra C++ dosyasında parametre listesini eşleştirmemiz gerekir.
‫Bunu yine kopyalayıp yapıştırarak ya da yazarak yapabilirsiniz.
‫Yazarak yazarsanız, yazım hatası yapmadığınızdan emin olun çünkü derleyici şikayet edecektir.
‫Dolayısıyla, Delta Time adında bir float değerini parametre olarak geçireceğiz veya platformu hareket ettirmek için bir parametre
‫olarak tanımlayacağız, ancak bunu aslında platformu tik olarak hareket ettirmek için bir argüman olarak geçirmedik.
‫Ve burada küçük kırmızı dalgalı bir çizgi olduğunu göreceksiniz.
‫Üzerine gelirsem, işlev çağrısında çok az argüman olduğunu söylüyor çünkü başlık
‫dosyasında ve şimdi C++'da tanımladım ve float türünde bir parametre gerektiriyor.
‫Bu yüzden bu parametreyi sağlamalıyım.
‫Bu yüzden, sağladığım parametrenin, sağladığım değerin delta time değişkeninden
‫veya tick'teki Delta time parametresinden geldiğinden emin olacağım.
‫Dolayısıyla, değer iş parçacığı ile tick'e aktarılır, ardından MOVE platformuna
‫aktarılır ve MOVE platform işlevselliğimizi yürütmek için kullanılabileceği MOVE platform işlevindeki parametremizde
‫son bulur.
‫Bu yüzden sizden TIC'den çağıracağımız kendi rotate platform fonksiyonunuzu oluşturmanızı istiyorum.
‫Bu yüzden, MOVE platform fonksiyonumuz için yaptığımız gibi başlık dosyasına ekleyeceksiniz.
‫C++ dosyasına da aynı şekilde ekleyeceğiz.
‫Bu nedenle, bu işlevler için yaptığımız yöntemden ipuçlarını alın ve ardından bunu tick işlevinden çağırın.
‫Delta zamanını geçirdiğinizden ve Delta zamanını geçirmenize izin verecek parametreleri tanımladığınızdan
‫emin olun ve Rotate platformunun gövdesini bir mesaj çıkaracak şekilde uygulayın.
‫Aslında henüz platformu döndürmeyecek, ancak bunun gerçekten çağrıldığından emin olmak için bir
‫yer tutucu olarak öğrendiğimiz UI günlüğünü kullanarak bir günlük mesajı yazdırın.
‫Videoyu duraklatın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden başlık dosyasından başlayacağız ve çoğunlukla MOVE platformumuz için yaptığımızın aynısını
‫yapacağız.
‫Bunu özel bir bölüme koyacağız, böylece yalnızca sınıfımız içinde erişilebilir olacak.
‫Buna void dönüş tipi vereceğim, buna rotate platform diyeceğiz.
‫Parametre listesini açacağız.
‫Ve içine float türünde olacak bir parametre koyacağız.
‫Buna Delta zamanı diyeceğiz ve parametreleri kapatıp noktalı virgülle bitireceğiz.
‫Şimdi, C++ dosyasında yaptıklarımızın çoğu başlık dosyasındakilerle tamamen aynıdır.
‫Aslında bu satırı kopyalayıp C++ dosyasına gideceğim ve size neyin farklı olduğunu göstereceğim.
‫Bu yüzden dosyanın sonunda yeni bir boş satıra gideceğim, bunu yapıştıracağım ve sonra farklı olan şey burada
‫sınıf adında kapsam çözümleme operatörüne ihtiyacımız var.
‫Yani hareketli bir platformumuz olacak, kolon, kolon döndürme platformu.
‫Daha sonra parametre listesine sahip oluruz ve sonunda noktalı virgüle ihtiyacımız kalmaz.
‫Bu yüzden noktalı virgülü kaldırın, yeni bir satır ekleyin ve bunun yerine küme parantezlerimizi ve bu iki küme parantezi arasına
‫yeni bir satır ekleyin.
‫Burada yapmak istediğimiz şey bir günlük mesajı yazdırmak.
‫Bu yüzden enter tuşuna basacağım.
‫Sadece basit bir ekran mesajı olacak.
‫Metnin içine de platformumuzun adını yazacağım.
‫Yani yüzde olacak.
‫Sonra dönen nokta yazacağız ve ardından adı gireceğim.
‫Şimdi bunu bir değişkene koyabiliriz, ancak burada oldukça kısa bir satır olduğu
‫için, sadece star, get name yazacağım ve sonra parantezleri koyacağım, böylece esasen burada get name'i çağırıyoruz.
‫Bu, F dizesini ele geçiren ifadedir.
‫Ve sonra bu sonucu günlük mesajımıza koymak için dönüştürüyoruz.
‫Dolayısıyla, tüm platformlarımızdan rotasyonun basıldığını görmeyi bekliyorum, ancak bu yalnızca teknikte gerçekten çağırırsam
‫gerçekleşecek.
‫Bu yüzden MOVE platformundan sonra tick fonksiyonuna gidelim ve yeni bir satır ekleyip rotate platformunu çağıralım.
‫Gördüğünüz gibi, parantezleri açtığımda Delta zamanı için bir argüman girmem gerektiğine
‫dair bir ipucu veriyor.
‫Bu yüzden yine aynı Delta zaman değişkenini buradan geçireceğiz.
‫Ve dediğim gibi, buradaki isimler aynı olmak zorunda değil.
‫Dolayısıyla bu delta zamanının tik içindeki Delta zamanı ile eşleşmesi gerekir.
‫Ancak bunun yerine değişkeni rotate platformu içinde date olarak adlandırmayı seçebiliriz ve rotate platformu içinde kullandığımız
‫her yerde parametrenin adını date olarak kullanmamız gerekir ve argüman temelde farklı olabilir.
‫Şimdi unreal'a geçelim ve derle düğmesine basalım çünkü başlık dosyasında bazı değişiklikler yaptık.
‫Derleme, C++ dosyasını değiştirdiğimizden biraz daha uzun sürecektir ve derleme tamamlandığında,
‫devam edip oynat düğmesine basacağız ve çıktı günlüğünü açacağız.
‫Ve gerçekten de dönen platformların her biri hakkında günlük mesajları görüntülediğimizi görebilirsiniz.
‫Görünüşe göre fonksiyonumuz etkin bir şekilde tick içinde çağrılıyor.
‫Harika bir şey.
‫Şimdi bir sınıfın üyesi olan kendi fonksiyonlarımızı nasıl oluşturacağımızı anlıyoruz.
‫Bir kodu yeniden kullanmak ve aynı zamanda Blueprint'te olduğu gibi düzenlemek için çok kullanışlı bir araçtır.
‫Bir sonraki derste görüşürüz.