Konuyu Oyla:
  • Derecelendirme: 5/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Actor’ler Arası Haberleşme ve Referans Alma
#1
Öncelikle Oyuna başlamadan bir aktörü başka bir aktöre nasıl referans olarak gösterebileceğimize bakalım. Aşağıdaki level içine yerleştirilmiş bir spot bir de davul blueprint actor bulunmakta.

1_zpsokkvy5fl.jpg

Spot blueprint’i içinde BOOM isimli bizim oluşturduğumuz bir custom event bulunmakta, biz de davula her vurduğumuzda bu event’i ateşlemek istediğimizi farzedelim.
Önce davul blueprint’i içinde yeni bir değişken oluşturuyoruz ve bu değişkenin türünü spot BP olarak belirliyoruz, ardından Instance Editable kutucuğunu seçiyoruz.

2_zpsva8m24ys.jpg

Instance Editabe seçeneği aktif olduğu için davul blueprint’inin level içine yerleştirdiğimiz her bir kopyası için bu değişkeni ayrı ayrı belirleyebileceğiz. Level içinde davulu seçip sağdaki Details paneline bakarsak orada Spot isimli yeni bir parameter çıkacak. Bunu level içindeki herhangi bir spot BP aktörünü seçerek referansımızı belirleyebiliriz. Bu değişkeni kullanarak da oyun öncesi(Construction Script) veya oyun sırasında(Event Graph) davul blueprinti içinden BOOM eventini(veya spot BP’ye ait herhangi bir değişken/fonksiyonu) ateşleyebilir&değiştirebiliriz.

3_zpsdovaedje.jpg

Peki oyun sırasında oluşturulmuş(Spawn Actor from Class) bir aktörü çağırıp nasıl işlem yapabiliriz?

Yöntemlerden birisi Get All Actors of Class fonksiyonunu kullanmaktır.

4_zpsppytd7q1.jpg

Örnekte E’ye basıldığında 0. Indexteki, yani bulunan ilk spot aktörüne ulaşırız. R’ye basıldığında ise tüm spot BP’lerini alıp, döngüden(loop) geçirip hepsine işlem yaptırırız. Anlayacağınız bu şekilde istediğimiz aktöre komut gönderemiyoruz, üstelik actor sayısı fazla ise Tick veya Timer ile yaptırılacak işlemlerde büyük performans kaybına yol açar.


Çaresiz durumda olmadığınız veya gerçekten ihtiyacınız olmadığı sürece Get All Actors of Classyerine yapabilecekleriniz şunlardır:

5_zpsdf29fhon.jpg
6_zpsz9mkpb3q.jpg

Line trace, Hit veya overlap event gibi collision ile eleme yaparak istediğiniz actor veya aktörleri seçebilirsiniz. Actor pinini çekip Cast To(cast to ile event sonucu alınan actor’ün istediğimiz actor olup olmadığını control edip yine elemeden geçiriyoruz) yaparak spot içindeki istediğimiz şeye müdahele edebiliriz.


Veya Blueprint Interface kullanabiliriz. Bunun için öncelikle Content Browser içinde bir Blueprint Interface yaratıyoruz.

7_zpsi7i4231x.jpg

Ardından interface içinde istediğimiz fonksiyonu ve değişkenlerini oluşturuyoruz.

7_1_zps5d1zzp6y.jpg

Son olarak da bu interface’i Class Settings aracılığıyla spot blueprint’I içine ekliyoruz;

7_2_zps45ac1m3l.jpg

Ekledikten sonra bu fonksiyonu bir event olarak kullanıp istediğimiz işlemi yaptıralım:

7_3_zpsg6ws0lcl.jpg

Artık Cast To yapmamıza gerek kalmadan bu interface’e sahip tüm aktörlerde interface’i kullanarak hazırladığımız event ve fonksiyonlara erişebiliriz;

8_zpsxhcunfew.jpg


Peki, ya bir actor içinden Level Blueprint’e mesaj göndermek istersek? Bildiğiniz gibi level veya level BP’ye referans alınamıyor. O yüzden actor BP’ler içinden Event Dispatcher kullanıp level BP içinde de bu actor/actor’lerin referansını alıp mesajlaşma sağlıyoruz.

Oyunumuzda player controller BP içinden herhangi bir leveled bulunan bir Matinee’yi(Matinee, eski Sequencer, level dışında erişilemeyen bir araçtır bu yüzden bahsettiğimiz konu için güzel bir örnek olacak) başlatmak istediğimizi farzedelim. Önce player controller BP içinde ismi MatineeDispatcher olan yeni bir Event Dispatcher yaratıyoruz ve “Call” fonksiyonuyla bu dispatcher’ı çağırıyoruz;

9_zps6symrnva.jpg

Sonra da Level BP > Event Begin Play ile Player Controller içinden bu dispatcher’I çağırıp “Bind” ediyoruz, yani level BP içindeki eventi bu dispatcher’a bağlıyoruz. Artık player controller içindeki Continue event’I ne zaman matineeDispatcher’I çağırırsa level BP içinde de aşağıdaki resimde göreceğiniz MatineeDispatcher_Event_0 ateşlenecek ve bununla level BP içinde istediğiniz amaçla kullanabileceksiniz:

10_zpsf4idawwt.jpg
Özelden sorulan UE4 soruları cevaplanmayacaktır...
Cevapla
#2
Çok teşekkürler. Gerçekten sorularıma cevap aldım. Mantığıma dahada oturdu çok teşekkür ederim.  Shy
Ara
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
Video Unreal Engine 4 - Ders 8 - Can Paketi Oluşturma ve Pickup (Alma) İşlemi. oguz-ulku 0 676 22-09-2015, Saat: 20:22
Son Yorum: oguz-ulku

Hızlı Menü:


Unreal Engine Türkiye

This forum is only for fans and support. It has nothing to do with Epic Games.

Bu site sadece fan ve destek amaçlıdır. Epic Games ile bir ilgisi yoktur.