![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUTMpY%2Fbtr1vr3aZkm%2FPGOikZm3RE95znG7QyTHmK%2Fimg.jpg)
이득우의 언리얼 C++ 게임 개발의 정석 프레임 시간을 가져온다. GetWorld()->GetDeltaSeconds() 게임이 시작된 이후 경과된 게임 시간을 가져온다. GetWorld()->GetTimeSeconds() 게임이 시작된 이후 중지된 시간을 제외한 경과된 게임 시간을 가져온다. GetWorld()->GetUnpausedTimeSeconds() 게임이 시작된 경과된 현실 시간을 가져온다. GetWorld()->GetRealTimeSeconds() 게임이 시작된 이후 중지된 시간을 제외한 경과된 현실 시간을 가져온다. GetWorld()->GetAudioTimeSeconds()
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvxt3Q%2Fbtr01TAqYXc%2F6BvxEddZFcuInKajHxino1%2Fimg.png)
이득우의 언리얼 C++ 게임 개발의 정석 PostInitializeComponents 모든 컴포넌트의 초기화가 완료되면 호출된다. OnActorSpawned 액터가 스폰되면 생성된다. BeginPlay 액터가 게임에 참여할 때 호출된다. Tick 게임 플레이 동안 매 프레임마다 호출된다. EndPlay 액터가 게임에서 퇴장할 때 호출된다. 이 외에도 다양한 이벤트 함수가 존재한다. Actor Lifecycle What actually happens when an Actor is loaded or spawned, and eventually dies. docs.unrealengine.com 이벤트 함수를 오버라이딩하여 사용할 수 있다. PostInitializeComponents -> BeginPlay ->..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrmEh2%2Fbtr1bkYw1ej%2FDxICM8kXnLyK6N5u1pNTjK%2Fimg.png)
이득우의 언리얼 C++ 게임 개발의 정석 check 어설션은 조건이 거짓이면 에디터를 종료시켜 버린다. ensure 어설션은 에디터를 종료시키지 않고 Output Log에 오류를 출력한다. 어설션을 통해 효과적인 디버깅을 하기 위해서는 디버깅 기호를 설치하는 것이 좋다.
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyKUAH%2FbtsiPQlmVpg%2FSfvYE4BL3IgkDtWik3UplK%2Fimg.png)
이득우의 언리얼 C++ 게임 개발의 정석 ABLOG_CALLINFO 현재 함수 이름과 라인 수를 FString 문자열로 만든다. #define ABLOG_CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")")) ABLOG_S(Verbosity) 현재 함수 이름과 라인 수를 Verbosity 수준으로 로깅한다. #define ABLOG_S(Verbosity) UE_LOG(ArenaBattle, Verbosity, TEXT("%s"), *ABLOG_CALLINFO) ABLOG(Verbosity, Format, ...) 현재 함수 이름과 라인 수, 포맷 스트링을 Verbosity 수준으로 로깅한다. #define ..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDUap2%2Fbtr1nwja9D6%2FCEgFsoFaXZPVkaynmktCY0%2Fimg.png)
이득우의 언리얼 C++ 게임 개발의 정석 카테고리 기능마다 고르를 구분하기 위해 사용된다. 로깅 수준 Log(로그), Warning(경고), Error(오류) 세 가지가 있다. UE_LOG(카테코리, 로깅 수준, 포맷 스트링, 인자..) 언리얼의 로그는 Output Log 윈도우나 Saved/Logs 폴더에서 확인할 수 있다. 필터를 설정해 특정 수준 혹은 카테고리의 로그만 볼 수 있다. 게임 모듈 헤더 파일에 새로운 로그 카테고리를 선언한다. 게임 모듈 소스 파일에 로그 카테고리를 정의한다. 각 C++ 클래스의 헤더 파일이 CoreMinimal.h가 아닌 게임 모듈 헤더 파일을 포함하도록 한다. 액터의 이름을 가져오는 GetName() 함수는 FString 타입의 문자열을 반환하므로 역참조(*)를 해줘..
![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsfoxR%2Fbtr1nDvBrxz%2FMlkMOAiNsTldhPQhkm2EU0%2Fimg.png)
이득우의 언리얼 C++ 게임 개발의 정석 에셋의 경로는 게임 실행 중에 변경될 일이 없다. 따라서, 클래스 생성자가 호출될 때마다 에셋 오브젝트 변수를 생성하고 초기화하는 것은 불필요한 작업이다.