λͺ©λ‘μ 체 κΈ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cIsbAJ/btrV9Wn5paX/YF2FG2LUzqnohd6aR00VI0/img.jpg)
UObject μ ν΄λμ€ νμ μ²΄ν¬ (λ°νμ) μ°λ¦¬κ° μμ΄ν μ μ¬μ©νλλ°, μλͺ¨νμΌ κ²½μ° μλμ κΉλ μ½λλ₯Ό μ§ λ€κ³ κ°μ ν΄ λ³΄μ. μ½λλ λ€μκ³Ό κ°λ€. if (nullptr != Cast(myItem)) { this->consumeItem(myItem); } else { this->useItem(myItem); } (λ¬Όλ‘ νμ€μ μΌλ‘ μ΄λ° κ²½μ°, FConsumable ν΄λμ€μμ useItem μ override νκ² μ§λ§.. μ¬νΌ) μμ²λΌ, κ°μ²΄μ ν΄λμ€ νμ μ 체ν¬νλ κ²½μ°, μ΄λ»κ² νλ κ²μ΄ ν¨μ¨μ μΌκΉ? μμ κ°μ κ²½μ°μ, λ§μ½ μΊμ€ν μ΄ μ€μ λ‘ νμν κ²½μ°κ° μλλΌλ©΄(μ¦, κ·Έλ₯ νμ 체νΉλ§ νλ©΄ λλ κ²½μ°λΌλ©΄), Cast(μΈλ¦¬μΌμ Cast λ μ /λ€μ΄ μΊμ€ν μ ν μ μλλ‘ κ΅¬νλμ΄ μλ€)λ₯Ό μ°λ κ²λ³΄λ€..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bpH4tR/btrVuICQdXx/rmrvnHIfHDsFcvKHIwkeck/img.jpg)
ν μ€νΈ μ‘°ν λ³΄ν΅ νλ‘μ νΈ κ·λͺ¨κ° 컀μ§κ² λλ©΄, κ°μ’ μ€νΈλ§λ€μ μ€νΈλ§ ν μ΄λΈμ λ£μ΄μ μ¬μ©ν κ²μ΄λ€. μ΄λ μ€νΈλ§ ν μ΄λΈμ Namespace μ ν€ κ° λ κ°κ° μκ³ , μνλ Namespace μμ ν€λ₯Ό λμ ν΄ μνλ ν μ€νΈλ₯Ό μ°Ύκ² λλ€. Namespace λ κ°λ¨ν λ§ν΄ μ€νΈλ§ ν μ΄λΈ νμΌμ μ΄λ¦μ΄λΌκ³ 보면 λλ€. μ€μ λ‘ C++ μ½λλ‘ μ§λ©΄, λ€μκ³Ό κ°λ€ : FText findText; FText::FindText(TEXT("your_namespace"), TEXT("your_key"), findText); your_namespace μ your_key μ μ ν©ν κ°μ μ£Όλ©΄, μνλ κ°μ΄ findText μ λ€μ΄κ° κ²μ΄λ€. μμ°Έ, μ€νΈλ§ ν μ΄λΈμ λ§λ λ€μ, μλ¨μ 'λ€μμ€νμ΄μ€' λ₯Ό μ λλ‘ μ€μ ν΄ ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b40vop/btrVkcqtlsg/nr4eLpnIvQh2qan4T83EI0/img.jpg)
Delay μ€ν λ§μ½ μΌμ μκ°μ΄ μ§λ ν ν¨μκ° μ€νλκΈΈ μνλ€λ©΄, FTimerHandle μ μ΄μ©ν΄ λ€μκ³Ό κ°μ΄ μ½λλ₯Ό μ§λ©΄ λλ€. FTimerHandle myTimerHandle; GetWorld()->GetTimerManager().SetTimer(myTimerHandle, FTimerDelegate::CreateLambda([&]() { // λ΄κ° μνλ μ½λ ꡬν DoSomething(); // νμ΄λ¨Έ μ΄κΈ°ν GetWorld()->GetTimerManager().ClearTimer(fadeOutTimerHandle); }), InDelayTime, false); // λ°λ³΅ μ€νμ νκ³ μΆμΌλ©΄ false λμ true λμ μ, μ°Έκ³ λ‘ FTimerHandle μ κΈλ‘λ² νμ΄λ¨Έ 맀λμ μμ μ¬μ©νλ©°..
μ΄ λ³μ μκ³ λ μμ΄ μ°Ύμμ¨λ€. ν λ² μλ€κ³ ν΄μ λ€μ μ°Ύμμ€μ§ μλ κ²λ μλλ©°, μ΄λ―Έ κ²ͺμ΄ λ³΄μλ€κ³ ν΄μ λ 견λκΈ° μ¬μμ§λ κ²λ μλλ€. κ·Έλ₯ 곡νν¨μ΄ λ΄ λͺΈμμ νκ³ λ λ€. νμ΄μ μ€κΈ°, κ·Έ μμ λ΄κΈ΄ μ μ νλνλκ° λ΄ λͺΈ μ κΉμ κ³³κΉμ§ νκ³ λ€λ―μ΄, 곡νμ μκ°±μ΄λ€μ κΉμν λ΄ μμΌλ‘ νλͺ°μμΉλ€. λλ κ·Έ λ μμ΄ μ¬ λλ§λ€, 곧 λμ³ νλ₯Ό κ²λ§ κ°μ΄ λΆκΈκ±°λ¦¬λ λλΉλ₯Ό λ μμ΄μ²λΌ μ΄μ© μ€μ λͺ°λΌ νλ€. λ°λ»ν΄μΌλ§ ν κ°μ‘±λ€μ μμμλ¦¬κ° λ§μΉ μΈκ΅¬λ € 골νμ§κ° μ°κ·Έλ¬μ§λ μ리μ²λΌ λκ»΄μ§κ³ , μ¬λνλ μ¬λκ³Ό ν¨κ»ν μκ°μ, λ§μΉ λμ¬κΈ°κ°μ΄ μ ν΄μ§ μκΏλμ΄μ²λΌ λκ»΄μ§κ² λ§λλ λΆμΉλ³. μ§λ ν λ³μ μ‘°κΈμ΄λΌλ λ¬λκΈ° μν΄, νμλ μ€λλ μ°μΈμ μκ°μ λΉλ €μ°λ € ν΄λν°μ λ€μ΄ λ°μ λͺ©μ리λ₯Ό κΎΈλ©°λΈλ€.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UgBV1/btrUL8Xxpd5/aZywMCmGFfUGEigErX5hLK/img.jpg)
inline κ³Ό FORCEINLINE μ μ°¨μ΄ μ¬μ€ μ΄ λμ μ°¨μ΄λ μ΄λ―Έ λ¨μ΄μμ μ½κ² νμ ν μ μλ€. μΌλ¨ ν¨μμ μΈλΌμΈνλΌλ κ²μ, μ»΄νμΌλ¬κ° ν¨μ λ°λλ₯Ό μ»΄νμΌ νμμ λΆμ¬ λ£μ΄ ν¨μ νΈμΆμ μ€λ²ν€λλ₯Ό μ€μ΄λ μ΅μ ν λ°©μμ΄λΌκ³ λ³Ό μ μλ€. C++ μμ inline μ μ»΄νμΌλ¬μκ² ν¨μλ₯Ό μΈλΌμΈνν κ²μ 'μμ²' νλ€. μ΄λ 'λͺ λ Ή' μ΄λ 'κ°μ 'κ° μλλ€. 볡μ‘ν ν¨μλ κ°μν¨μλ μ»΄νμΌλ¬κ° μΈλΌμΈν ν΄μ£Όμ§ μμΌλ©°, inline ν€μλλ₯Ό μ°μ§ μλλΌλ μκ³ κ°λ¨ν ν¨μμ κ²½μ° μ»΄νμΌλ¬κ° μμμ μΈλΌμΈνλ₯Ό ν΄ μ£ΌκΈ°λ νλ€. λ°λ©΄ FORCEINLINE μ λ§ κ·Έλλ‘ κ°μ μ μΌλ‘ μΈλΌμΈνλ₯Ό μν¨λ€. μμ±μμ μλ©Έμ λ±, μΈλΌμΈν μν€κΈ°μ μ ν©νμ§ μμν¨μλ€μ΄ μκ°λ³΄λ€ λ§μ΄ μ‘΄μ¬νλ―λ‘, FORCEINLI..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dbfpkT/btrUNrhEkIk/i34CEx6kYtFWw92HCTkmIK/img.png)
C++ μ λν΄ κ³΅λΆν κ²κ³Ό, κ°λ°νλ©΄μ μκ² λ κ²λ€μ λ€λ£Ήλλ€ RTTI RTTI λ κ°λ¨ν λ§ν΄, μ€μκ° νμ μ 보λΌλ λ»μ΄λ€. RTTI λΌλ λ¨μ΄λ₯Ό νμμλ μ λ€μ΄λ³Ό μΌμ΄ μλ€κ°, dynamic_cast λ₯Ό μ¬μ©νκΈ° μν΄ λΉμ£ΌμΌ μ€νλμ€ μ΅μ μ λ€μ μ΄λ μ€ ν΄λΉ νλͺ©μ λ°κ²¬νλ€. μλ€μνΌ, C++ λ 리νλ μ κΈ°λ₯μ μ 곡νμ§ μλλ€. C# μμλ 리νλ μ μ μ 곡νλλ°, ν΄λΉ κΈ°λ₯μ λ°νμμμ ν΄λμ€ νμ , λ©μλ, νλ‘νΌν° λ±μ λ©ν μ 보λ₯Ό μ κ³΅ν΄ μ€λ€. λΉμ£ΌμΌ μ€νλμ€μμλ ν΄λΉ κΈ°λ₯μ λκ³ ν¬ μ μκ² λ§λ€μ΄ λμλ€. κ°λ¨ν λ§ν΄, ν΄λΉ κΈ°λ₯μ ν€κ² λλ©΄ λ°νμμμ νμ μ λν μ 보λ₯Ό μ»μ μ μλ€. RTTI λ κ°μ ν¨μκ° μλ ν΄λμ€μ λν΄μλ§ λμνλ©°, μ΄λ ν΄λμ€μ νμ κ΄λ ¨ μ λ³΄κ° v..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/EsvvF/btrUEvF3DVe/wWLcRqfEZQy2I62KeBFVO0/img.png)
C++ μ λν΄ κ³΅λΆν κ²κ³Ό, κ°λ°νλ©΄μ μκ² λ κ²λ€μ λ€λ£Ήλλ€ νμ ν΄λμ€μμμ κΈ°λ° ν΄λμ€ μμ±μ νΈμΆ μ¬μ€ νμ ν΄λμ€κ° μμ±λ λ, κΈ°λ° ν΄λμ€ μμ±μκ° νΈμΆλλ€λ 건, C++ μ μ‘°κΈμ΄λΌλ ν΄ λ³Έ μ¬λμ λꡬλ μκ³ μλ μ¬μ€μ΄λ€. λν ν¨μμ μμ±μ/μλ©Έμμ νΈμΆ μμκ° λ€μκ³Ό κ°λ€λ κ²λ, μ΅ν μλ €μ§ μ¬μ€μ΄λ€. μ¦, A ν΄λμ€κ° κΈ°λ° ν΄λμ€μ΄κ³ , B ν΄λμ€κ° νμ ν΄λμ€λΌκ³ κ°μ νμ λ B ν΄λμ€ λ³μλ₯Ό μ μΈνλ©΄ νΈμΆ μμκ° λ€μκ³Ό κ°μ΄ λμ¬ κ²μ΄λ€ : A ν΄λμ€ μμ±μ B ν΄λμ€ μμ±μ B ν΄λμ€ μλ©Έμ A ν΄λμ€ μλ©Έμ νμ§λ§ ν κ°μ§ κΈ°μ΅ν΄μΌ ν κ²μ, νμ ν΄λμ€λ₯Ό λ§λ€ λ νΈμΆλλ κΈ°λ° ν΄λμ€ μμ±μλ 'μΈμκ° μλ κΈ°λ° ν΄λμ€μ μμ±μ' μ΄λ€. μ¦, μΈμλ₯Ό λ°λ νμμ κΈ°λ° ν΄..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cJg7tp/btrUAc6T0DV/016VQLTL1MXRKB010WGc9K/img.png)
C++ μ λν΄ κ³΅λΆν κ²κ³Ό, κ°λ°νλ©΄μ μκ² λ κ²λ€μ λ€λ£Ήλλ€ μ°μΈ‘κ°κ³Ό μ’μΈ‘κ° μ°λ¦¬λ C++03 κΉμ§, μ°λ¦¬λ μ°μΈ‘κ°κ³Ό μ’μΈ‘κ° λ κ°μ§μ κ°λ μ μ¬μ©νμ¬ μ½λ©μ νμλ€. κ°λ¨ν λ§νμλ©΄, μ’μΈ‘κ°μ 'μμ μ’μΈ‘μ μλ λ³μ'λ₯Ό, μ°μΈ‘κ°μ 'μμ μ°μΈ‘μ μλ κ°'μ μλ―Ένλ€. // a λ μ’μΈ‘κ°, 5 λ μ°μΈ‘κ°μ΄λ€ int a = 5; ννλ€ μ’μΈ‘κ°μ 'μ΄λ¦μ΄ μλ λ μ'μΌλ‘ μΈμνκΈ°λ νλ€. μλ°ν λ§νλ©΄ νλ¦° λ§μ μλλ€. κ·Έλ°λ° move semantics κ° λμ λκΈ° μμνλ©΄μ, C++11 λΆν° λ격λ³μ΄ μμλλλ°... μ¬κΈ°μ λ§μ μ¬λλ€μ΄ μ’μΈ‘κ°κ³Ό μ°μΈ‘κ°μ λν κ°λ μ ν·κ°λ €νκΈ° μμνλ€(νμ ν¬ν¨). move semantics κ° λμ§ μ λͺ¨λ₯΄κ² λ€λ©΄, μ΄μ κΈ(κΈ°μ΄, μμ©, μ¬ν)μ κΌ μ½κ³ μ€μ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/k8EKA/btrUyhN77Bu/aFfeITDSBJKRcWRkBgxpz0/img.png)
C++ μ λν΄ κ³΅λΆν κ²κ³Ό, κ°λ°νλ©΄μ μκ² λ κ²λ€μ λ€λ£Ήλλ€ const_cast λ§μ μ¬λλ€μ΄ μκ³ μλ―μ΄, C++ μμ μ 곡νλ casting μ μ’ λ₯λ ν¬κ² 4 κ°μ§μ΄λ€. κ° μ©λλ₯Ό κ°λ¨ν μ μ΄λ³΄λ©΄ λ€μκ³Ό κ°λ€ : static_cast : 'μΌλ°μ μΈ' C μ€νμΌμ μΊμ€ν . λ³΄ν΅ μ μΊμ€ν (νμ ν΄λμ€μ ν¬μΈν°λ₯Ό κΈ°λ° ν΄λμ€μ ν¬μΈν°λ‘ κ°λ¦¬ν΄) μ μ¬μ©νλ€. dynamic_cast : μμ κ΄κ³μ μλ ν΄λμ€λ€ μ¬μ΄μ μΊμ€ν . λ³΄ν΅ λ€μ΄ μΊμ€ν (κΈ°λ° ν΄λμ€μ ν¬μΈν°λ₯Ό νμ ν΄λμ€μ ν¬μΈν°λ‘ κ°λ¦¬ν΄) μ μ¬μ©νλ€. λ§μ½ μ€ν¨νλ©΄ nullptr λ₯Ό 리ν΄νλ€. μ°Έκ³ λ‘, dynamic_cast λ polymorphic ν ν΄λμ€λ§ κ°λ₯νλ°, κ°λ¨ν λ§νλ©΄ virtual ν¨μκ° ν¬ν¨λ ν΄λμ€μ΄μ΄μΌ dynam..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/1sX0F/btrSW5oqvCp/tUiKj3xUl0l4xM7kt722ek/img.jpg)
μ¬λ μ΄νΈ ꡬ쑰 (μν€ν μ²) μ¬μ€ μΈλ¦¬μΌμλ μ΄λ―Έ UMG λΌλ, λ§€μ° νΈλ¦¬ν μμ ― κ΄λ ¨ ν΄μ΄ μ‘΄μ¬νλ€. νμ§λ§ μ½λλ‘ UI λ₯Ό 컨νΈλ‘€ν μ μλ€λ μ₯μ λλ¬Έμ, μ€μ λ‘ λ§μ κ³³μμ μ¬λ μ΄νΈ(Slate) λ₯Ό νμ©νκ³ μλ€. μ¬λ μ΄νΈλ μ΄λ€ λ μμ΄κ³ , μ΄λ»κ² λμμΈλμ΄ μλμ§, 곡μ λ¬Έμ(λ²μλ³Έ)λ₯Ό ν΅ν΄ λ¨Όμ κ°λ¨νκ² μ§κ³ λμ΄κ°λλ‘ νμ! μ΄λ² κΈμμλ μ¬λ μ΄νΈκ° μΆκ΅¬νλ λ°©ν₯κ³Ό μ² νμ λν΄ λ€λ£¬λ€. μΌλ¨, μλν° μΈν°νμ΄μ€μ λλΆλΆμ μ¬λ μ΄νΈλ‘ μ μλμ΄ μλ€. Contents Browser λΏλ§ μλλΌ λΈλ£¨νλ¦°νΈ μλν°, μ λλ©μ΄μ μλν° λ± μμ§ μΈν°νμ΄μ€μ λλΆλΆμ μ°¨μ§νκ³ μλ€. μ¬λ μ΄νΈλ λ€μκ³Ό κ°μ μ κ·Όλ²μ μ¬μ©νλ€ : (λΆν¬λͺ μΊμμ μ€λ³΅ μ€ν μ΄νΈλ₯Ό νΌνκΈ° μν΄. μ ν΅μ μΌλ‘ UI λ μ€ν μ΄νΈλ₯Ό ..