나만의 작은 도서관

[TIL][C++] 250818 MMO 서버 개발 81일차: 언리얼 에디터에서 C++ Class 폴더에는 UCLASS로 지정한 클래스만 뜬다, [언리얼] 에디터를 거치지 않고 Visual Studio에서 직접 파일(.h, .cpp)을 추가할때 주의할점 본문

Today I Learn

[TIL][C++] 250818 MMO 서버 개발 81일차: 언리얼 에디터에서 C++ Class 폴더에는 UCLASS로 지정한 클래스만 뜬다, [언리얼] 에디터를 거치지 않고 Visual Studio에서 직접 파일(.h, .cpp)을 추가할때 주의할점

pledge24 2025. 8. 18. 22:44
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 

언리얼 에디터에서 C++ Class 폴더에는 UCLASS로 지정한 클래스만 뜬다.

  • 가끔씩 착각하는 건데 언리얼 에디터에 존재하는 C++ Class 폴더에 표시되는 클래스는 어디까지나 UCLASS로 지정한 클래스만 뜬다. UCLASS로 지정하지 않은 클래스는 뜨지 않으며, 리플렉션 매크로 함수로 지정한 USTRUCT이나 UENUM 등도 따로 표시되지 않는다. 다시 한번 나열하면 아래와 같다.

 

에디터의 C++ Class 폴더에 노출되지 않는 C++ 관련 요소

  • 매크로 함수가 추가되지 않은 모든 C++ 코드
  • UCLASS 매크로 함수가 존재하지 않는 폴더
    • 예를 들어, Network라는 폴더에 UCLASS로 지정된 클래스가 하나도 없다면 Network 폴더 자체가 에디터에 표시되지 않는다.
  • UCLASS 매크로 함수로 지정하지 않은 클래스
  • UCLASS 매크로가 아닌 매크로 함수
    • USTRUCT
    • UENUM
    • 단, C++ Class 폴더에 표시되지 않을뿐 에디터에서 사용할 수는 있다.

 

[언리얼] 에디터를 거치지 않고 Visual Studio에서 직접 파일(. h,. cpp)을 추가할 때 주의할 점

  • C++ 소스 파일을 언리얼 프로젝트에 추가할 때 항상 클래스만 만들고 싶은 건 아닐뿐더러, 굳이 UCLASS로 지정해 리플렉션 시스템에 등록하고 싶지 않을 때도 있다. 이러한 경우 에디터를 거치지 않고 Visual Studio에 직접 파일을 추가하게 되는데 이때 주의할 점이 있다.

 

추가한 파일은 추가한 필터 위치와 상관없이 Intermediate-ProjectFiles 폴더에서 생성된다.

  • 이게 굉장히 중요하다. 멋모르고 ‘필터를 지정하고 파일을 추가했으니 필터 아래에 파일이 생기겠지?’라고 생각했다면 오산이다. Visual Studio에서 생성한 모든 파일은 ProjectFiles 폴더 아래에 생성되니 반드시 생성 후 원하는 의도했던 폴더 아래로 이동시켜 줘야지 정상적으로 사용할 수 있다.

 

파일 이동 후에는. uproject에서 regenerate를 하자

  • 별의별이유로 visual studio에서 빌드한 내용이 언리얼 에디터에 적용되지 않는 경우가 발생하는데 이유 중 하나로 ‘regenerate를 안 함’이 있다. 꼭 regenerate를 하자