UE_LOG(LogTemp, Log, TEXT("========================="));
UClass* ClassRuntime = GetClass(); //UMyGameInstance 클래스 정보를 런타임에서 얻어옴
UClass* ClassCompile = UMyGameInstance::StaticClass(); // 해당 클래스 정보 얻어오는 다른 방법 위와 동일한 객체 가르킴
//check(ClassRuntime == ClassCompile);
// 체크 통과하면 바로 아래의 로그를 출력 하지만 체크는 실패 발생시 에디터가 꺼지고 에러 출력
//ensure(ClassRuntime != ClassCompile);
// ensure는 에디터 안끄고 문제점 확인 가능
ensureMsgf(ClassRuntime != ClassCompile, TEXT("에러 발생 시킨 코드"));
//ensureMsgf는 메시지 출력 가능
UE_LOG(LogTemp, Log, TEXT("학교 담당 클래스 이름 : %s"), *ClassRuntime->GetName());
UE_LOG(LogTemp, Log, TEXT("========================="));

기본값을 지정하지 않으면 빈 문자열
기본값을 지정하고 싶음 생성자 코드에 지정하면 된다.

이부분
UMyGameInstance::UMyGameInstance()
{
// 롸잇 히어ㄹ
MyNamel = TEXT("기본값");
}
근데 아래에서 이 변수를 MyNamel 을 바꾸면 기본값은 없어지나?
void UMyGameInstance::Init()
{
MyNamel = TEXT("바밤바");
}
정답은 NOPE.
기본값은 CDO라고 하는 템플릿 객체에 저장됨
UMyGameInstance::UMyGameInstance()
{
MyNamel = TEXT("기본값");
}
void UMyGameInstance::Init()
{
Super::Init();
MyNamel = TEXT("바밤바");
MyNamel= TEXT("벼볌벼");
UE_LOG(LogTemp, Log, TEXT("이름 : %s"), *MyNamel); // 바밤바 출력됨
UE_LOG(LogTemp, Log, TEXT("이름 기본 값 : %s"), *GetClass()->GetDefaultObject<UMyGameInstance>()->MyNamel);
// 기본값인 벼볌벼출...이 될까?
}
하지만 기본값은 출력이 안됨
왜냐하면
CDO(기본값)를 고치는 생성자 코드 수정시 헤터파일 수정과 같이 에디터를 끄고 컴파일 해야 함
CDO와 UClass 정보는 엔진이 초기되 되는 과정에서 정보가 만들어지기 때문