Fonksiyon ve Değişkenleri Blueprint’te Göstermek

Değişkenleri Blueprint’te Göstermek

In the Class Defaults

Kodun içine gömülmüş değişkenleri ayarlamak için her seferinde kodla oynamak pratik bir iş değil. Unreal bize bu konuda bir esneklik sağlıyor. Değişkenin önüne ekleyeceğimiz UPROPERTY macrosu ile değişkeni blueprint içinde ya da nesne üzerinde değiştirmek mümkün.

UPROPERTY(EditDefaultsOnly)
float genlik = 0.25;

UPROPERTY(EditInstanceOnly)
float frekans = 2; 

UPROPERTY(EditAnywhere)
float damage = 100; 
C++
  • EditDefaultsOnly : Parametremizi sadece bluprint içinde değiştirebiliriz. Bu değişiklik blueprint’ten üretilecek tüm instance’ları kapsar.
  • EditInstanceOnly : Parametremizi sadece instancelarda değiştirebiliriz. Fakat blueprint üzerinde değişiklik yapamayız
  • EditAnywhere : Bu ise diğer ikisinin bir kombinasyonudur. Parametremizi hem blueprint içerisde hem de tüm instance’larda değiştirebiliriz.

Eğer parametremizi read-only yapmak istersek: Edit yerine Visible kelimesini kullanmalıyız:

UPROPERTY(VisibleDefaultsOnly)
UPROPERTY(VisibleInstacenOnly)
UPROPERTY(VisibleAnywhere)
C++
Blueprint i açtığımızda Class Defaults panelinde değişkenimizi görebiliriz.
Sahne üzerindeki bir iteme tıkladığımızda o item e ait değişkenleri Deailts panel de görebiliriz.

In the Event Graph

Şuana kadar yaptığımız şeyleri ancak sağ taraftaki details panelde görmek mümkündür. Eğer event graph içinde bu değişkenleri kullanmak istiyorsak aşağıdaki keywordleri kullanabiliriz:

UPROPERTY(BlueprintReadOnly) 
UPROPERTY(BlueprintReadWrite)
C++
  • BlueprintReadOnly : ile değişkene ait getter’ı kullanabiliriz (yani değerini okuyabiliriz). Fakat setter kullanamayız yani değişkeni değiştiremeyiz.
  • BlueprintReadWrite : Hem getter hem setter kullanabiliriz. Yani

Eğer değişkenimizi sol panelde göremiyorsak:

Eğer C++’dan inherit ettiğimiz değişkeni sol panelde bulamıyorsak “Show Inherited Variables” kutusunu işaretlemeliyiz.

Private Access

Normalde private: specifier’ı altında eventgraph’a değişkenlerimizi expose edemiyoruz. Ya public ya da protected olması gerekli. Fakat biz eğer illa ki private olsun istiyorsak bunun için “AllowPrivateAccess” meta etiketini kullanmamız gerekli:

private:
	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta = (AllowPrivateAccess = true))
	int money;
C++

Category

Oyunumuzu geliştirirken birden fazla değişkeni blueprint’e aktarmak isteyebiliriz. Üç, beş, on derken bir noktada dağınıklık oluşacaktır ve bu dağınıklığı önlemek için “catergory” kelimesini kullanabiliriz:

UPROPERTY(EdityAnywhere, BlueprintReadWrite, Category = "ABC")
C++

Fonksiyonları Blueprint’te Göstermek

Değişkenleri aktarabildiğimiz gibi fonksiyonlarımızı da blueprint’e aktarabaliriz:

  • BlueprintCallable : Herhangi bir fonksiyonu blueprint callable yapabiliriz. Callable fonksiyonlarda Execute pinleri (ok pinleri) bulunur.
  • BlueprintPure : Eğer bir fonksiyon sınıf içindeki herhangi bir durumu/state değiştirmiyorsa callable yapılabilir. Yani nesne nin önceki ve sonraki durumu,, değişkenleri fonksiyonu değiştirince aynı ise callable yapabiliyoruz. Bir nevi C++’daki const fonksiyonlar gibi düşünebilirsiniz. Sınıfın internal yapısında bir değişiklik yapmaz.
	UFUNCTION(BlueprintCallable)
	int32 MaxOfThree(int32 A, int32 B, int32 C);
	
	// veya 
	
	UFUNCTION(BlueprintPure)
	int32 MaxOfThree(int32 A, int32 B, int32 C);
C++

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *