emin2045

Unreal MVP
23 Haz 2020
159
1
71
28
PlayerInputComponent->BindAxis(...,....,&ACharacter::Jump)

Inputu bind ederken & lı bir ifade kullanıyoruz. Bu fonksiyonun referansı tam olarak nasıl çalışmasını sağlıyor kafamda tam oturmadı, anlatabilirseniz memnun olurum.

---------------Çözüldü
 
emin2045' Alıntı:
PlayerInputComponent->BindAxis(...,....,&ACharacter::Jump)

Inputu bind ederken & lı bir ifade kullanıyoruz. Bu fonksiyonun referansı tam olarak nasıl çalışmasını sağlıyor kafamda tam oturmadı, anlatabilirseniz memnun olurum.

Mesela :
     PlayerInputComponent->BindAction("Jump", IE_Pressed, this, &ACharacter::Jump);

Kullanıcı girdilerini yönetmekle sorumlu olan PlayerInputComponent ta,   "Jump" adındaki delegate  ( Bunları işaret fişeği gibi düşün. Önceden istediğin yerden buna fonksiyonları bağlıyorsun. Bir yerden bu işaret fişeği ateşlendiğinde ve görüldüğünde bağlı olan tüm fonksiyonlar nerede olurlarsa olsunlar çalışmaya başlıyorlar)  için klavye tuşune basılma anında yani IE_Pressed da, bu class ın instance ında (  burdaki this bunu ifade ediyor sonra gelecek fonksiyonun nerede olduğu nerede bulunacağını gösteriyor)  ACharacter::Jump adlı fonksiyon bağlanıyor ya da atanıyor. Yani artık Jump delegate i bir yerde ateşlendiğinde bu fonksiyon da diğer bağlı fonksiyonlar ile birlikte ateşlenip çalışmaya başlayacak.

 Basit olarak &func konusuna bakarsak:Normal C deki fonksiyon pointerları konusu. Fonksiyonun adresini bir değer olarak  kullanıyoruz ve parametre olarak BindAxis fonksiyonuna geçiriyoruz. Bu fonksiyonda kendi içinde, verilen parametre fonksiyonunu, içerisinde delegate e bağlıyor (bind yapıyor.) Konu çok boyutlu ve derin bir konu. Delegatesler ile ilgili şu dökümana bakabilirsin.

  https://docs.unrealengine.com/en-US/Programming/UnrealArchitecture/Delegates/index.html

Fonksiyon Pointer lar ile  ilgili şuraya bakabilirsin:
 
 https://www.cprogramming.com/tutorial/function-pointers.html

   Not: Bu tarz kodların altta yatan mantığını çok anlamamıza gerek yok. Kullanmayı bilmek yeterli. Ancak kendi delegate lerimizi yazmayı bilmeliyiz.