omer.hatay

Üye
2 May 2019
182
14
18
26
(34) İstanbul Avrupa
Selam dostlar. Yeni bilgisayar aldım ve hemen işe koyuldum. C++ ile oyun programlama çalışacağım. Daha girer girmez anlamadığım bir durumla karşılaştım. 

Normal C++ kodlamaların da string olduğu gibi (std::string isim = "Omer";) veya integer olduğu gibi (int sayi = 42;) kodlanır. Ama Unreal Enginde daha farklı bir değişken tanımlamasıyla karşılaştım. Mesela (using FText = std::string;) veya (using int32 = int;). Biz kodlamada string veya integer değişkenleri olduğu gibi kullanamaz mıyız? Eğer kullanırsak bu programın gidişatı için sorun olur mu?
 
Merhabalar, bu değişkenleri Blueprint üzerinde kullanabilmeniz için int8, int16, int32, int64 bit değerlerini kullanmalısınız çünkü Blueprint bunu destekliyor.

String değişkeni konusuna gelecek olursak FText, FName ve FString olarak kullanabilirsiniz ama bunların önemli farklılıkları var.

FText değeri 40 bayttır 
FName 8 bayttır 
FString 16 bayttır

FText eğer localization (yerelleştirme) kullanacaksanız bu metin türünü kullanmak zorundasınız.
FString manipule, modify, arama veya değiştirme vb. işlemler için bu metin türünü kullanmalısınız
FName ise Skeletal mesh üzerindeki kemiklere erişmek istediğinizde veya parametreleri değiştirmek istediğinizde bu metin türünü kullanmalısınız. 

Bu yüzden Unreal Engine böyle bir yol izlemiş kütüphaneyi bu şekilde kullanıyor. Bunların tabii ki birbirinden daha farklı artıları ve eksileri var buradan ulaşabilirsiniz.
 
Ozzy' Alıntı:
Merhabalar, bu değişkenleri Blueprint üzerinde kullanabilmeniz için int8, int16, int32, int64 bit değerlerini kullanmalısınız çünkü Blueprint bunu destekliyor.

String değişkeni konusuna gelecek olursak FText, FName ve FString olarak kullanabilirsiniz ama bunların önemli farklılıkları var.

FText değeri 40 bayttır 
FName 8 bayttır 
FString 16 bayttır

FText eğer localization (yerelleştirme) kullanacaksanız bu metin türünü kullanmak zorundasınız.
FString manipule, modify, arama veya değiştirme vb. işlemler için bu metin türünü kullanmalısınız
FName ise Skeletal mesh üzerindeki kemiklere erişmek istediğinizde veya parametreleri değiştirmek istediğinizde bu metin türünü kullanmalısınız. 

Bu yüzden Unreal Engine böyle bir yol izlemiş kütüphaneyi bu şekilde kullanıyor. Bunların tabii ki bir birinden daha farklı artıları ve eksileri var buradan ulaşabilirsiniz.

Teşekkür ediyorum cevabınız için. Kullanım şeklini de zamanla öğreneceğimi düşünüyorum.
 
Sadece std::string gibi değil diğer STL(Standart Template Library) içerisinde bulunan sequential (std::vector, std::array, std::forward_list) ve associative containerlar(std::map, std::set...) Unreal ile yapabilmen için aşina olmalısın.

En çok kullanacağın containerlardan birisi şüphesiz TArray<> şablon sınıfı STL içerisindeki std::vector ile benzerlik gösterir. 

Aynı şekilde TMultiMap gibi C++ STL sağladığı şey TMultiMap<> Unreal jargon ile.

Aynı zamanda adaptörler(std::stack, std::queue) gibi şeyleri bu containerlar arasında kavrayabilirsin.