- ๋์ฑ๋ ๋ง์ง
- ์ฒํธ ๋ง์ง
- ์์ธ๋์ ๊ตฌ ๋ง์ง
- ๋ฉ๋ฒ๋ฅธ ๊ด๊ด์ง
- japanese
- ์๋๋ ๋ช ์
- ์ค๋ก์๊ธธ ๋ง์ง
- ์๋๋ ๋ง์ง
- ์ฒํธ ๋ง์ง ์ถ์ฒ
- franchise
- SNU
- ์๋๋ ๊ด๊ด
- ์๋๋ ๋ณผ๊ฑฐ๋ฆฌ
- ์์ธ๋ ๋ง์ง
- ํธ์ฃผ ๋ง์ง
- ์ผ๋ณธ์ฌํ
- ์๋๋ ๊ด๊ด์ง
- sinchon
- Deep learning
- Gangnam
- HONGDAE
- ์์ธ๋์ ๊ตฌ์ญ ๋ง์ง
- ํธ์ฃผ ๊ด๊ด์ง
- ๋ฅ๋ฌ๋
- ๋ฅ๋ฌ๋ ํํ ๋ฆฌ์ผ
- ๋ฉ๋ฒ๋ฅธ ๊ด๊ด
- ๋์ฟ ๋ง์ง
- japanese ramen
- ์๋๋ ์ฌํ
- ํธ์ฃผ ๊ด๊ด
๋ชฉ๋ก์ ์ฒด ๊ธ (1024)
KoreanFoodie's Study

TSharedRef ๋ฅผ ํด๋์ค ๋ฉค๋ฒ ๋ณ์๋ก ์ ์ธํ ๋ ์๋ฌ ํต์ฌ : 1. TSharedRef ๋ฅผ ์ ์ธํ ๋๋ ๋ฐ๋์ ์ด๊ธฐํ๋ฅผ ํด ์ฃผ์. 2. TSharedRef ๋ฅผ ์ด๊ธฐํํ ๋๋ MakeShareable ๋ณด๋ค MakeShared ๋ฅผ ์ฌ์ฉํ์. 3. ์ด๊ธฐํ๊ฐ ํ๋ค๋ฉด TSharedPtr ๋ก ์ ์ธํ๋ ๊ฒ๋ ๋์์ด๋ค. TSharedRef ๋ฅผ ๋ฉค๋ฒ ๋ณ์๋ก ์ ์ธํ ๋, ๋ง์ฝ ํค๋ํ์ผ์ด๋ ์์ฑ์์์ ์ด๊ธฐํ๋ฅผ ํด ์ฃผ์ง ์๋๋ค๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋๋ค... void EnsureRetrievingVTablePtrDuringCtor(const TCHAR* CtorSignature) { UE_CLOG(!GIsRetrievingVTablePtr, LogCore, Fatal, TEXT("The %s constructor..

TTypeCompatibleBytes ํ์ ํต์ฌ : 1. TTypeCompatibleBytes ์ ๊ธฐ๋ณธ ํ์ ์ด ์๋ ๋ฐ์ดํฐ ๋ฐฐ์ด๋ก, ์ปดํ์ผ ํ์ alignment ๊ฐ ๊ฐ๋ฅํ๋ค. 2. Alignment ๊ฐ ๋๋ ๊ธฐ๋ณธ ๋จ์๋ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋ ํ์ ์ผ๋ก๋ถํฐ ๊ณ์ฐ๋ ์ฌ์ด์ฆ๋ก ์ ์๋๋ค. 3. GetTypedPtr ๋ก ํด๋น Element ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. TypeCompatibleBytes.h ์ ์ ์๋ ๊ตฌํ์ ๋ณด๋ฉด, /** An untyped array of data with compile-time alignment and size derived from another type. */ template struct TTypeCompatibleBytes : public TAlignedBytes< sizeo..

์ธ๋ฆฌ์ผ ์ค๋งํธ ํฌ์ธํฐ ๊ตฌํ ์ธ๋ถ์ฌํญ๊ณผ ํ ํต์ฌ : 1. ์ค๋งํธ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ์ง ๊ณ ๋ คํ ๋๋ ํญ์ ํผํฌ๋จผ์ค์ ๋ํด ์๊ฐํด์ผ ํ๋ค. ์ค๋งํธ ํฌ์ธํฐ๋ ์์ ๊ด๋ฆฌ์๋ ์ ํฉํ์ง๋ง ์ผ๋ถ ์ค๋งํธ ํฌ์ธํฐ ํ์ ์ C++ ๊ธฐ๋ณธ ํฌ์ธํฐ๋ณด๋ค ๋ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. 2. TSharedPtr ๋ ๋น์นจ๋ฒํ(non-intrusive) ๋ก, ์ค๋ธ์ ํธ๊ฐ ์ค๋งํธ ํฌ์ธํฐ์ ์์ ํ์ ์๋์ง ์ ์ ์๋ค. ์ค๋ธ์ ํธ๋ฅผ TSharedRef ๋๋ TSharedPtr ๋ก ์ ๊ทผํ๋ฉด, ์ค๋ธ์ ํธ ํด๋์ค๋ฅผ TSharedFromThis ์์ ํ์์์ผ์ผ ํ๋ค. 3. ์ค๋งํธ ํฌ์ธํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋์์ ์์ ํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. ๋ฉํฐ ์ค๋ ๋์์ ์ฌ์ฉํด์ผ ํ๋ค๋ฉด, ์ค๋ ๋ ์ธ์ดํ ๋ฒ์ ์ ์ฌ์ฉํ์. ์ค๋งํธ ํฌ์ธํฐ ๊ตฌํ ์ธ๋ถ์ฌํญ ์ธ๋ฆฌ์ผ ์ค๋งํธ ํฌ์ธํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ..

TOptional ํต์ฌ : 1. TOptional ์ ์ธ์๋ก ๋ค์ด๊ฐ ๋ ์์ด ์์ฑ๋์๋์ง ์๋์ง ์ฌ๋ถ๋ฅผ ๊ฐ๋จํ๊ฒ ํ์ธํ ์ ์๋ Wrapper ํด๋์ค์ด๋ค. 2. Optional.h ์ ๋ณด๋ฉด Value ์ bIsSet ์ด ์๋๋ฐ, Value ๊ฐ ์ค์ ๋๊ธฐ๋ ๋ฐ์ดํฐ์ด๊ณ , bIsSet ์ด ํด๋น ๋ฐ์ดํฐ์ ์์ฑ์๊ฐ ํธ์ถ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ ์์ด๋ค. IsSet, Emplace, GetValue ๋ฑ์ ์ฌ์ฉํ๋ฉด ํด๋น ํด๋์ค๋ฅผ ์ ์ฉํ๊ฒ ํ์ฉํ ์ ์๋ค. 3. TOptional ์ ์ฌ์ฉํ๋ ์ฅ์ ์ค ํ๋๋, ํน์ ๋ณ์๊ฐ ์ด๊ธฐํ๋์๋์ง๋ฅผ ํ๋จํ๊ธฐ ์ํด 'Magic Number' ๋ฅผ ์ธ ํ์๊ฐ ์์ด์ง๋ค๋ ๊ฒ์ด๋ค! TOptional ๊ตฌ์กฐ์ฒด ์ผ๋จ, Optional.h ์ ์ ์๋ TOptional ๊ตฌ์กฐ์ฒด์ ๋๋ต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋ณด์..

ENUM_CLASS_FLAGS ์ฌ์ฉํ๊ธฐ (์ธ๋ฆฌ์ผ ํ๋๊ทธ ์ฌ์ฉ๋ฒ) ํต์ฌ : 1. ์ฌ๋ฌ ์กฐ๊ฑด์ ๋์์ ๊ฐ์ง ์ ์๋ ์ํฉ์ ๋ค๋ฅผ ๋๋, Enum Class ์ ๊ฐ์ Shift ์ฐ์ฐ์๋ฅผ ํ์ฉํด Bit Flag ์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. 2. EnumClassFlags ํ์ผ์ ์ ์๋ ํ ํ๋ฆฟ ํจ์๋ค(e.g. EnumHasAnyFlags)์ ํ์ฉํ๋ฉด, Enum Class ์ ์ ์๋ ํ๋๊ทธ๋ค์ ์ด์ฉํด ์ผ์ด์ค๋ค์ ์ค์ฒฉ์ ํจ์จ์ ์ผ๋ก ์ฒดํฌํ ์ ์๋ค. 3. ์ผ๋ฐ์ ์ผ๋ก Enum Class ๋ด์ ๊ฐ๋ค์ Flag ๋ก ํํํ๋ ๊ฒฝ์ฐ๋ UI ๋ ํ๊ฒฝ์ค์ ์ธํ ๋ฑ์ด ์๋ค. ์ผ๋ฐ์ ์ผ๋ก Enum Class ๋ ๊ฐ์ ์ฃผ์ ๋ด์์ ์ฌ๋ฌ ์กฐ๊ฑด๋ค์ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ผ ์ฌ๋ฌ ๋ณตํฉ์ ์ธ ์ํฉ์ ๋์์ ๋ค๋ค์ผ ํ๋ ์ผ์ด์ค๊ฐ ์๋ค๊ณ ํ๋ฉด ..

TimerHandle ๋ฐฐ์ด ์ฌ์ฉํ๊ธฐ (TimerHandle Array) ํต์ฌ : 1. TArray ํ์ ์ ์ฌ์ฉํ๋ฉด ๋๋ค. 2. ์๋ก์ด FTimerHandle ์ ๋ฃ์ ๋๋ Emplace ๋ฅผ ์ฌ์ฉํ๋ค. 3. ๊ฐ์ฒด๊ฐ ํ๊ดด๋๊ฑฐ๋ ์ ๋ฆฌํ๋ ์์ ์ ClearTimer ๋ฐ ๋ฐฐ์ด์ ๋น์์ฃผ๋ ์์ ์ ํด ์ฃผ์. ์ค๋ช ํ ๊ฒ์ ์์ 3์ค ์์ฝ์์ ๋ค ํ์ผ๋, ์ฝ๋๋ง ๋ณด์. // ์ ์ธ // ์ผ์ ์๊ฐ ํ UTextBlock ๋ณธ๋ ์์์ผ๋ก ๋์๊ฐ๊ฒ ๋ง๋ค๋ ์ฌ์ฉํ๋ ํ์ด๋จธํธ๋ค TArray timerHandleList; // ๊ตฌํ void UTestWidget::NativeConstruct() { for (int i = 0; i < 10; ++i) { FTimerHandle newTimerHandle; timerHandleList..

๋์ ์ผ๋ก ์ปดํฌํดํธ ์์ฑํ๊ธฐ (Dynamically create ActorComponent) ํต์ฌ : 1. ์ผ๋ฐ์ ์ผ๋ก ActorComponent ๋ ์์ฑ์์์ CreateDefaultSubobject ํจ์๋ฅผ ํตํด CDO ๊ฐ ์์ฑ๋๋ค. 2. ๋์ ์ผ๋ก ์กํฐ ์ปดํฌ๋ํธ๋ฅผ ์์ฑํ ๋๋ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋ค. ๋ธ๋ฃจํ๋ฆฐํธ์์๋ AddComponent ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฉฐ, C++ ์์๋ NewObject ๋ก ActorComponent ๋ฅผ ์์ฑ ํ, ๊ธฐ์กด RootComponent ์ Attach ํ๋ ๋ฐฉ์์ ํ์ฉํ๋ค. 3. ์ปค์คํ AddComponent ํจ์๋ฅผ ๋ง๋ค์ด์ ํธํ๊ฒ ํ์ฉํ๊ฑฐ๋, ํ ํ๋ฆฟ ํจ์๋ฅผ ๋ง๋๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด๋ค. ๋ธ๋ฃจํ๋ฆฐํธ์์ AActor ํด๋์ค์๋ AddComponent ๋ผ๋, ๋ด๋ถ์ ์ผ๋ก NewObj..

SetTimer ์ ํจ์ ๋ฐ ๋๋ค(Lambda) ์ฐ๊ฒฐํ๊ธฐ ํต์ฌ : 1. UObject ์์ ํด๋์ค์์๋ ๊ธฐ์กด ํจ์๋ฅผ SetTimer ํจ์์์ ๋ฐ๋ก ์ฐ๊ฒฐํ ์ ์๋ค. 2. ์ผ๋ฐ์ ์ผ๋ก๋ FTimerDelegate ์ Lamda ํจ์๋ฅผ ์ฐ๊ฒฐํด ์ฌ์ฉํ๋ฉฐ, UObject ๋ฅผ ์์ํ์ง ์๋ ํด๋์ค์์๋ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค. 3. FTimerHandle ์ ์ ์ญ์ด๋ฉฐ, ์ฌ์ฉ ์๋ฃ ํ์๋ ClearTimer ๋ฅผ ์ด์ฉํด ํ์ด๋จธ๋ฅผ ํด์ ํด ์ฃผ๋๋ก ํ์! ์ด์ ๊ธ์์ ์ธ๊ธํ ๋ฐ ์์ง๋ง, ์ผ์ ์๊ฐ ์ดํ ํน์ ํจ์๊ฐ ํธ์ถ๋๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ์ ์กฐ๊ธ ๋ ์์ธํ ๊ธฐ๋กํด๋ณด๋ ค ํ๋ค. SetTimer ์ ํจ์์ ๋๋ค๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์ถ๊ฐ๋ก ์๊ฐํ๋ค! 1. ๊ธฐ์กด ํจ์์ ๊ทธ๋๋ก ์ฐ๊ฒฐ (UObject ํด๋์ค์์ ์ฌ์ฉ ๊ฐ๋ฅ) FTimer..

ํ์ฌ ์๊ฐ ๋ก๊ทธ ์ฐ๊ธฐ ํต์ฌ : 1. FDateTime ๊ตฌ์กฐ์ฒด๋ฅผ ์ด์ฉํด์ ๊ฐ์ข ์๊ฐ์ ์ฒดํฌํ ์ ์๋ค. 2. FDateTime::Now() ๋ฅผ ํตํด์ ํ์ฌ ์๊ฐ(์ด๊น์ง)๋ฅผ ๊ตฌํ ์ ์๋ค(static). 3. FDateTime::GetMillisecond() ๋ฅผ ํตํด ํ์ฌ ๋ฐ๋ฆฌ ์ด๋ฅผ ๊ตฌํ ์ ์๋ค(non-static). ์๋ ์ฝ๋๋ฅผ ์ด์ฉํด์ ํ์ฌ ์๊ฐ์ ๊ตฌํ๋ ๊ฐ๋จํ ๋ก๊ทธ๋ฅผ ์ฐ์ด ๋ณผ ์ ์๋ค! FDateTime dateTime; UE_LOG(Error, FText::FromString( FString::Format(TEXT("Current Time : %s:%d ms"), { FDateTime::Now().ToString(), dateTime.GetMillisecond() }))); UE_LOG ๋งคํฌ๋ก๋ F..

SafeZone ์์ ฏ ํต์ฌ : 1. SafeZone ์์ ฏ์ ์ฌ์ฉํ๋ฉด, ์ฝ์/PC/๋ชจ๋ฐ์ผ ๋ฑ ์์ ํจ๋ ๊ฐ์ฅ์๋ฆฌ์ UI ๋ฐ ์ปจํ ์ธ ๊ฐ ์ ๋๋ก ์ถ๋ ฅ์ด ๋์ง ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค. ๋จผ์ , SafeZone ํจ๋์ ๋ํ ์ธ๋ฆฌ์ผ ์์ง์ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ๋ค : ์ธ๋ฆฌ์ผ ๊ณต์ ๋ฌธ์์ ์๋ ์ธ์ดํ ์กด์ ๋ํ ๊ทธ๋ฆผ์ ๋ณด์. ์ผ์ชฝ์ SafeZone ์์ ฏ์ด ์๋ ๊ฒฝ์ฐ์ด๊ณ , ์ค๋ฅธ์ชฝ์ SafeZone ์์ ฏ์ด ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ค๋ฅธ์ชฝ์ ๊ฒฝ์ฐ, Uniform Safe Zone (๊ท ๋ฑ ์ธ์ดํ ์กด) ์์ญ์ 0.9(๋นจ๊ฐ) ์ผ๋ก ์ค์ ํ๋ค. ์ด๋ ๊ฒ ์ธ์ดํ ์กด์ ํ์ฉํ๋ฉด, ๊ฐ์ฅ์๋ฆฌ์ "Unsafe" ํ ์กด์ ์์ ฏ์ด ์๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ค! ์ฐธ๊ณ : ์ธ๋ฆฌ์ผ ๊ณต์ ๋ฌธ์