Class Reference

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Class Reference
#1
Merhaba arkadaşlar, küçük bir sorum olacak.
Ufak bir Ai tasarlıyorum, şu anlık ana karaktere gitmekten başka bir şey yapmıyor.

Sorunum haritadaki tüm Ai'leri seçerken "Get All Actors Of Class" kullanımında,
Actors Class girişine Ai Character Class Ref ile giriş yaparsam hata veriyor, Class'ı direkt olarak çalıştırır isem normal çalışıyor. Sebebi nedir aralarındaki fark nedir? 

Hata;
yqj6oj.png

pn2bg0.jpg
Ara
Cevapla
#2
Merhaba xWiggle,

Oncelikle programlama uzerinden ornek vermek istiyorum.


#include <iostream>

class elma
{
public:
float m_Float{4};
};

int main()
{
elma armut;
std::cout << armut.m_Float << std::endl;
}



Yukaridaki basit programda elma senin sinifin. Armut ise senin objen. sinifinin icerisinde m_Float adinda bir veri uyesi(data member) var. elma sinifindan armut nesnesini yarattigin zaman icerisindeki seylere kapsulleme yontemine gore(public, protected, private) erisim saglayabilirsin.

Ayni sekilde blueprintler icerisinde MOR olanlar classlar olanlar. Senin yarattigin nesneler de MAVI olanlar. Yani farkini anladiysan bence elmalarla armutlari karistirmayasin ha.

Simdi gelelim gercek cevaba, 
Kullandigin dugum UClassdan katilim almis bir sinif ornegini parametre olarak aliyor. Get Actors Of All Class oyun dunyasinda var olan aktor referanslarini bir aktor dizisi olarak dondurur.  Sinifini secmen gerekiyor. Burada sinif ile nesneyi ayirt etmek.
Cevapla
#3
Yani sorunum bütün bir Class'ı referans değil sadece bir objesini göstermek? 
Peki hangi değişken türü ile tüm Class'ı gösterebilirim. Kodumun hiçbir yerinde sabit olmasını istemiyorum açıkçası..
Ara
Cevapla
#4
(10-08-2018, Saat: 08:05)xWiggle Adlı Kullanıcıdan Alıntı:  Yani sorunum bütün bir Class'ı referans değil sadece bir objesini göstermek? 
Peki hangi değişken türü ile tüm Class'ı gösterebilirim. Kodumun hiçbir yerinde sabit olmasını istemiyorum açıkçası..

Yeni bir değişken oluştur. Değişken oluştururken obje referansını alacaksın. Bu referans geçersiz(null pointer) olabilir. Eğer referansın daha önceden atanmadıysa ona erişemezsin.

Örnek vermek gerekirse herhangi bir blueprint aktör içeriisnde Game Instance sınıfımın nesne referansı için bir değişken oluşturuyorum. 

image.png

Tekrar söylüyorum, herhangi bir null pointeri de-referans edemezsin, yani daha önceden atamadığın bir nesne referansının içerisine erişirsen hata alırsın.
Cevapla
#5
Sanırım anlamaya başladım ancak ben nesneye değil bütün sınıfını değişken olarak alıyorum şu anda, sonrasında sınıftan oluşan nesnelere ulaşıyorum.
Diye düşünüyorum en azından.  Sad
Actor Class girişi obje almıyor çünkü.

lZ4gnr.jpg

oVyMB9.jpg

Asıl yapmam gereken önce bir Ai Actor nesnesi oluşturup ondan class'ı çekmek sanırım?
Blackboard'dan SelfActor referansı alıp ondan yapmaya çalıştım başaramadım.

Birde bu işlemin sonunda ekranda 2 tane aktör olmasına rağmen en sonda koyduğum bir Print Screen düğümü 6 kere True döndürüyor onu da çözemedim.  Big Grin
Ara
Cevapla
#6
(10-08-2018, Saat: 20:54)xWiggle Adlı Kullanıcıdan Alıntı:  Sanırım anlamaya başladım ancak ben nesneye değil bütün sınıfını değişken olarak alıyorum şu anda, sonrasında sınıftan oluşan nesnelere ulaşıyorum.
Diye düşünüyorum en azından.  Sad
Actor Class girişi obje almıyor çünkü.

lZ4gnr.jpg

oVyMB9.jpg

Asıl yapmam gereken önce bir Ai Actor nesnesi oluşturup ondan class'ı çekmek sanırım?
Blackboard'dan SelfActor referansı alıp ondan yapmaya çalıştım başaramadım.

Birde bu işlemin sonunda ekranda 2 tane aktör olmasına rağmen en sonda koyduğum bir Print Screen düğümü 6 kere True döndürüyor onu da çözemedim.  Big Grin

Şu anda yaptığın şey, oyun dünyasındaki bütün AI Character Class Ref sınıfının nesne dizisini dizi olarak alıyorsun. Sonra bu nesne dizisini bir döngü içerisine sokup, Array Element senin nesnen olarak, Array Element nesne içerisinden Get AI Controller düğümünü kullanarak Run Behavior Tree düğümü çalıştırıyorsun. Ne gibi bir mekanizma yaptığının farkında değilim. Bunu almak için illa Get All Actors of Class düğümünü kullanmana gerek yok. Event Dispatcher, Blueprint Interface, hatta oyuncu kutunun üzerine overlap ederse aktörden sınıfa cast edebilirsin.
Cevapla
#7
Sadece BehaviorTree'mi her Ai için ayrı ayrı çalıştırmaya çalışıyordum. İlk denememde Ai'lerden sadece bir tanesi hareket etmişti bende bütün nesneleri alıp foreach ile hepsinde çalıştırdım işe yaradı. "Crowd control" ile yaparsam sanırım bir kerede de çalışabilir, ancak henüz araştırmadım.

Bu arada tıpatıp aynı kodu tekrar yazdım şu an hata vermiyor. Neyin değiştiği ile ilgili en ufak bir fikrim yok..
Default value dahi aynı.

moR0W2.jpg
Ara
Cevapla
 


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  All Actors Of Class leonscottkfm 3 289 09-07-2017, Saat: 11:09
Son Yorum: Khubur
  Class Objesi leonscottkfm 4 505 28-10-2016, Saat: 21:41
Son Yorum: leonscottkfm
  Class Blueprint Sorusu qukla 16 1,945 11-08-2015, Saat: 16:55
Son Yorum: qukla
  Class Blueprint'e Matinee Eklemek qukla 2 872 06-08-2015, Saat: 19:45
Son Yorum: qukla

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.