개발 도중 기존 클래스, 열거형, 프로퍼티, 함수 명을 변경해야 할 경우가 있습니다.
이 변경에 영향받는 애셋 수가 많으면 이름 변경 후 프로젝트를 리컴파일해도 언리얼 엔진이 더이상 기존 애셋을 인식하지 못해 엄청난 데이터 손실이 발생합니다.
이 문제를 해결하기 위해 언리얼 엔진에서는 코어 리디렉트를 사용합니다. 코어 리디렉트는 프로젝의 DefaultEngine.ini, 플러그인의 경우 그 플러그인 접두사 이름의 .ini에 구성해야 합니다.
어느 경우든, 코어 리디렉트는 "[CoreRedirects]" 섹션에 배치됩니다. 이 코어 리디렉트는 애셋을 로드하는 동안 폐기된 데이터를 자동 리매핑하여 이름 변경 프로세스로 인한 데이터 손실을 방지합니다. 현재 사용되는 코어 리디렉트 실제 예는, BaseEngine.ini 파일에서 확인하시면 됩니다.
1. ClassRedirects : 제거된 UCLASS를 사용하여 오브젝트와 프로퍼티가 새 UCLASS를 가리키도록 변경합니다.
[CoreRedirects]
+ClassRedirects=(OldName="Pawn",NewName="MyPawn",InstanceOnly=true)
+ClassRedirects=(OldName="/Script/MyModule.MyOldClass",NewName="/Script/MyModule.MyNewClass")
OldName은 제거된 UCLASS의 이름이고, NewName은 새로 지정할 UCLASS의 이름입니다.
InstanceOnly 값이 true 인 경우, 원본 클래스가 아직 존재하고 참조될 수 있지만, 이전 클래스의 기존 인스턴스는 새 클래스로 리매핑해야 합니다.
2. EnumRedirects : 제거된 UENUM 유형 및 열거형 내 제거된 값을 리매핑합니다.
[CoreRedirects]
+EnumRedirects=(OldName="ENumbers",NewName="ELetters",ValueChanges=(("NumberTwo","LetterB"),("NumberThree","LetterC")))
ValueChanges 값에서 첫 스트링은 이전 열거형 값이고 두 번째 스트링은 새 값입니다. 두 값이 같은 클래스에 있는 경우, 이전 값은 더 이상 코드에 없어야 합니다
3. PropertyRedirects : 제거된 프로퍼티를 새 프로퍼티로 리매핑합니다.
[CoreRedirects]
+PropertyRedirects=(OldName="MyOldActor.OldIntProperty",NewName="MyNewActor.NewIntProperty")
+PropertyRedirects=(OldName="MyActor.OldFloatProperty",NewName="NewFloatProperty")
4. FunctionRedirects : 제거된 UFUNCTION 을 새 것으로 리매핑합니다.
[CoreRedirects]
+FunctionRedirects=(OldName="MyOldActor.OldFunction",NewName="MyNewActor.NewFunction")
+FunctionRedirects=(OldName="MyActor.OldFunction",NewName="NewFunction")
프로퍼티 명과 함수 명도 동일한 방식으로 변경해주시면 됩니다.
이렇게 언리얼 엔진에서는 코어 리디렉트를 사용하여 애셋을 로드하는 동안 제거된 데이터를 자동 리매핑하여 이름 변경 프로세스로 인한 데이터 손실을 방지할 수 있습니다.
'언리얼 C++ 프로그래밍' 카테고리의 다른 글
[언리얼 C++] 블루프린트 펑션 라이브러리 (0) | 2021.06.23 |
---|---|
[언리얼 C++] Asset 레지스트리 (0) | 2021.06.20 |
[언리얼 C++] Asset 레퍼런스 (1) | 2021.06.16 |
[언리얼 C++] 비동기 애셋 로딩 (1) | 2021.06.13 |
[언리얼 C++] Assert 매크로 (0) | 2021.06.12 |