반응형
WITH_EDITOR
/**
* Whether we are compiling with the editor;must be defined by UBT
*/
Editor가 컴파일될때 WITH_EDITOR의 코드가 컴파일된다는 것을 의미합니다.
GIsEditor
/**
* True if we are in the editor.
* Note that this is still true when using Play In Editor. You may want to use GWorld->HasBegunPlay in that case.
*/
Editor에서 실행하는 코드의 경우 사용합니다. 유의점은 PIE(Play In Editor)에서도 여전히 Editor이므로 이런 경우에는 GWorld->HasBegunPlay()를 사용합니다.
WITH_EDITORONLY_DATA
Reflected 멤버를 래핑하기 위한 헤더에서는 WITH_EDITORONLY_DATA를 사용하며,
코드용 CPP 파일에서는 WITH_EDITOR를사용합니다.
다음의 코드는 패키징을 위해 컴파일할때 오류가 발생합니다.
class AMyActor : public AActor
{
public:
# if WITH_EDITOR
UPROPERTY()
FString Name;
# endif
void Test();
}
void AMyActor::Test()
{
# if WITH_EDITOR
Name = GetName();
# endif
}
MyActor.gen.cpp에서 오류가 발생하는데, 이는 UHT가 WITH_EDITOR 헤더 파일의 매크로를 인식하지 못한다는 의미입니다.
Error: UProperties should not be wrapped by WITH_EDITOR, use WITH_EDITORONLY_DATA instead
즉, 헤더파일의 UPROPERTY 및 UFUNCTION으로 래핑된 멤버는 WITH_EDITORONLY_DATA를 사용합니다. 그리고, 헤더 파일이 아닌 CPP 코드에서는 WITH_EDITOR를 사용합니다.
'게임 개발 > Unreal Engine' 카테고리의 다른 글
[UE] 에디터 재시작시 열린 어셋 다시 열기 (0) | 2022.07.20 |
---|---|
[UE4] Assertion Macros - check, verify, ensure (0) | 2022.07.07 |
[UE4] AActor 클래스 Editor Tick이 동작 하도록 하기 (0) | 2022.06.13 |
[UE4] 에디터 뷰포트 카메라 얻기(Editor Viewport Camera) (0) | 2022.06.11 |
[UE4] 커스텀 구조체 TArray Contains 동작을 위한 oprator== 구현 (0) | 2022.06.11 |