본문 바로가기
Unreal/Solution

Unreal C++ 블루프린트 부모 클래스 변경

by Dev_카페인 2023. 12. 12.
반응형

[Unreal/C++] 블루프린트 부모 클래스 변경

 

Unreal Engine 5 에서 클래스 작업을 하던 도중 이름이 마음에 들지 않아 클래스 파일의 이름을 바꿨습니다.

해당 클래스를 부모로 가지고 있던 위젯 블루프린트는 부모 클래스를 찾지 못해 다음과 같은 에러를 발생시켰습니다.

위젯 블루프린트가 유효하지 않은 클래스에서 파생되어 로드할 수 없습니다.
이 블루프린트의 부모 클래스가 제거되지는 않았는지 확인해보세요!

 

 

먼저 이에 대한 해결책은 언리얼 포럼에서 찾을 수 있었습니다.

 

How to change parent class of blueprint asset?

Hey guys, If someone needs to change the Parent of Blueprint without opening the Blueprint in the Editor itself, there is a way to do that. So I also had a similar issue: I renamed the C++ Classes in my project and that caused a data loss. Then I was unabl

forums.unrealengine.com

 

이 방법을 제외하고 가장 간편하고 직관적인 해결책은

이전 변경된 클래스나 삭제된 클래스를 다시 만들어서 연결시켜준 후 부모클래스를 변경하는 것 입니다.

이 간편한 방법이 당시에는 생각나지 않아서 고생했지만 결과적으로 다른 해결책을 찾았으니 다행입니다.

 

위 방법을 사용하기 위한 방법은 다음과 같습니다.

1. Unreal 엔진과 Visual Studio 등 도구를 종료합니다.

2. 프로젝트 폴더 내에 Config->DefaultEngine.ini 를 메모장으로 열어줍니다.

3. 내용 중 [CoreRedirects] 항목이 없다면 가장 하단에 항목을 추가해줍니다.

4. CoreRedirects 항목 아래에 변경사항을 추가합니다.

[CoreRedirects]
+ClassRedirects=(OldName="OldClassName",NewName="NewClassName")

5. 추가가 완료되면 편집기를 닫고 솔루션 파일을 다시 생성합니다.

6. 엔진을 다시 실행시킵니다.

* 변경사항이 조정되지 않는다면 Binaries 파일이나 Intermediate 파일을 삭제하고 솔루션 파일을 다시 생성하여 테스트합니다.

 

Config

DefaultEngine

Open

 

Ex_Content

 

Edit DefaultEngine

Generate Visual Studio project files

 

 

꼭 필요한 작업은 아니지만, DefaultEngine의 갱신이 일어나기 전에 수정되는 작업이 영향을 끼치지 않도록 하려면 수정했던 파일을 원복해야합니다.

1. 정상적으로 열렸다면 부모 블루 프린트를 다시 한 번 변경해주고 컴파일->저장 합니다.

2. 언리얼 엔진과 편집기를 닫습니다.

3. 수정했던 DefaultEngine의 CoreRedirects 항목을 지워줍니다.

4. 언리얼 엔진을 다시 열고 부모 클래스가 여전히 정상적인지 확인합니다.

반응형