언리얼 #if WITH_EDITOR

Woogle·2024년 1월 19일
0

언리얼 엔진 5

목록 보기
54/63

📄 요약

  • 언리얼 에디터에서만 사용해야 하고 게임에서는 컴파일 및 패키징되지 않는 항목을 감쌀 때, 전처리기로 #if WITH_EDITOR를 사용한다.

  • 종료 시에는 #endif를 사용하고, 헤더와 소스파일에서 모두 감싸야한다.


📄 C++ 코드 예시

  • PostEditChangeProperty 함수는 에디터에서 블루프린트 변경 사항을 포착할 수 있다.

  • 이하 코드는 에디터에서 SprintSpeedWalkSpeed보다 항상 크거나 같게 조정해준다.

🚀 헤더

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category ="Movement Configuration", meta = (AllowPrivateAccess = "true", ForceUnits="cm/s", ClampMin=1, ClampMax=600, DisplayName="걷기 속도"))
float WalkingSpeed = 400.0f;

UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category ="Movement Configuration", meta = (AllowPrivateAccess = "true", ForceUnits="cm/s", ClampMin=1, ClampMax=600, DisplayName="달리기 속도"))
float SprintSpeed = 600.0f;

#if WITH_EDITOR	

virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;

#endif // WITH_EDITOR	

🚀 소스

#if WITH_EDITOR 

void UMultiplayerMovementComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) 
{ 
	Super::PostEditChangeProperty(PropertyChangedEvent); 

	FName PropertyName = (PropertyChangedEvent.Property != nullptr) ? PropertyChangedEvent.Property->GetFName() : NAME_None; 

	if (PropertyName == GET_MEMBER_NAME_CHECKED(UMultiplayerMovementComponent, WalkingSpeed)) 
	{ 
		if ( WalkingSpeed > SprintSpeed) 
		{ 
			SprintSpeed = WalkingSpeed; 
		} 
	} 
	else if (PropertyName == GET_MEMBER_NAME_CHECKED(UMultiplayerMovementComponent, SprintSpeed)) 
	{ 
		if ( WalkingSpeed > SprintSpeed) 
		{ 
			WalkingSpeed = SprintSpeed; 
		} 
	} 
} 

#endif // WITH_EDITOR

📄 참고 자료

profile
노력하는 게임 개발자

0개의 댓글