omer.hatay

Üye
2 May 2019
182
14
18
26
(34) İstanbul Avrupa
C++ ile bir actor oluşturup onun içerisinde bir integer ve bir TArray oluşturuyorum. Construction fonksiyonda bu integer kadar Arrow Component oluşturup bu TArray'e yerleştiriyorum. Sorun şu bu integerı C++'ta değiştirirsem değiştirdiğim değer kadar component oluşturuluyor. Bu actor'ü blueprintle oluşturup o integer değerle oynarsam bir değişiklik olmuyor ve C++'ta yazdığım kadar component oluşturuluyor. Kilit bir nokta var ama ne olduğunu bilmiyorum. Nedir acaba o kilit nokta?
 
Tüm class ların constructor ları engine ilk çalışmaya başladığında çalışırlar. Yani yükleme esnasında. Daha sonra BP devreye girer ve constructor da set edilen bir değeri override edebilir yani değiştirebilir. Yani BP de atadığın değer engine çalışmaya başlarken henüz yok. Ama constructor çalışıyor ve işlevini tamamlıyor. Daha sonradan değişmiş olan BP değerinin constructor da hiç bir hükmü yok. Dolayısı ile yapmaya çalıştığın şey mümkün değil. Bu işlemi BeginPlay de yapmalısın. Constructor böyle şeyler için uygun bir yer değil.
 
Hocam OnConstruction metodunu kullandım. O metodu kullanırken tabi createdefaultsubobject kullanamıyorum veya setupattachment. Bir kaç farklı pürüz vardı. Bir de Blueprint penceresinde göremiyorum değişiklikleri. Levela atmam gerekiyor :D
 
Doğrudur. C++ 'ın karanlık dünyasına hoş geldin :). Ayrıca AActor.h da Class "comment"lerine bakarsan başka yerler de bulabilirsin bunu yapacak. PostInitializeComponents vb. Ama OnConstructon da olur.