언어:
페이지 정보
엔진 버전:
언리얼 엔진

리디렉터

언리얼 엔진

언리얼 에디터에서 애셋을 이동하거나 이름을 바꾸면 원래의 장소에 Redirector (리디렉터)가 남습니다. 이를 통해 현재 로드되지는 않았지만 이 애셋을 참조하는 패키지가 그 애셋의 새 위치를 알게 됩니다. 작명 규칙을 조기에 정해두고 이를 고수하면 Redirector 로 인한 많은 문제점들을 예방할 수 있습니다.

에디터에서 리디렉터 고치기

에디터에서 리디렉터를 확인하려면 콘텐츠 브라우저에서 Show Redirectors (리디렉터 표시) 필터를 켭니다. 그러면 그 리디렉터를 가리키는 모든 패키지를 다시 저장한 뒤, 그것을 레퍼런싱하는 모든 것들을 다시 저장할 수 있었으면 그 리디렉터를 삭제합니다.

ResavePackages 커맨드렛

ResavePackages 커맨드렛은 -FixupRedirectors 옵션과 함께 실행하여 프로젝트의 모든 리디렉터 고치기를 시도할 수 있습니다. 명령줄 예제입니다:

UE4Editor.exe <GameName or uproject> -run=ResavePackages -fixupredirects -autocheckout -projectonly -unattended

명령줄 이 버전은 사용자가 로컬 머신에서 실행시키는 것입니다. 고칠 필요가 있는 모든 파일을 체크아웃 하며, 사용자가 제출을 합니다. 자동화 프로세스에서 자동 체크인 옵션을 사용하면 파일을 자동으로 체크인해 줍니다.

주의사항

이름변경

오브젝트를 새로 만들고, 이름변경한 다음, 원래의 것과 같은 이름의 새 오브젝트를 만들면 오류가 발생합니다. 처음 오브젝트 이름변경시 리디렉터가 생성되었는데, 리디렉터와 리소스는 이름이 같을 수 없기 때문입니다.

허상 리디렉터

리디렉터 관련해서 재현이 가능한 알려진 문제가 몇 가지 있습니다:

시나리오 1

  • 오브젝트 이름을 A 에서 B 로 바꿉니다.

  • B 를 삭제합니다

  • B 가 사용되고 있으므로 삭제할 수 없다는 오류 메시지가 뜹니다. 이름변경 도중 생성된 리디렉터가 아직 B 를 가리키고 있기 때문입니다.

시나리오 2

  • 오브젝트 이름을 A 에서 B 로 바꿉니다.

  • 오브젝트 이름을 B 에서 A 로 다시 바꿉니다.

  • A 를 삭제합니다.

  • 첫 이름변경에서 생성된 리디렉터는 소멸되지만, B 에서 새로 생성됩니다. 그 결과 A 는 참조되고 있기 때문에 지울 수 없을 것입니다.

에디터에서나 SavePackages 로 리디렉터를 고친 뒤 삭제를 하면 이 문제가 해결될 것입니다.