UE5

TSubclassOf와 TSoftObjectPtr의 차이점, 그리고 FSoftObjectPaths

게임 개발 2024. 9. 26. 04:41

 

비동기 애셋 로딩에 사용되는 TSoftObjectPtr, FSoftObjectPaths 

 

FSoftObjectPaths 와 TSoftObjectPtr는 아티스트 혹은 디자이너가 하드 포인터와 같은

UI를 사용해서 특정 애셋에 대한 레퍼런스를 만들되, 항상 로드되지 않도록 사용하기 위한 것이다.

(= 좀 더 가볍게 쓰기 위한 것)

 

FSoftObjectPaths는 UObject* 프로퍼티와 비슷하게 쓰는 것이고

TSoftObjectPtr은 기본적으로 FSoftObjectPaths 를 감싸는 TWeakObjectPtr입니다.

 

 

TSubclassOf와 TSoftObjectPtr의 차이점

 

TSubclassOf와 TSoftObjectPtr는 즉

UE에서 애셋과 클래스를 참조하는 데 사용되는 두 가지 서로 다른 방법입니다.

이 두 가지 방법은 다른 용도로 사용되며, 그에 따라 다른 방식으로 작동합니다.

 

 

TSoftObjectPtr

 

TSoftObjectPtr는 소프트 오브젝트 포인터로,

에디터와 런타임 모두에서 애셋을 지연 로딩할 수 있게 해줍니다.

 

TSubclassOf

 

TSubclassOf는 클래스를 참조하는 템플릿입니다.

특정 클래스 또는 해당 클래스의 하위 클래스를 지정할 수 있습니다.

주로 스폰할 클래스를 지정할 때 사용됩니다.

TSubclassOf는 클래스의 형식을 지정하며,

객체 인스턴스가 아니므로 위치나 트랜스폼에 접근할 수 없습니다.

 

사용 방법의 차이

TSubclassOf로 스폰할 액터를 가져오고, 

TSoftObjectPtr로 정의된 스폰 위치에 접근해서 스폰할 수 있습니다.

 

 

 

참고 공식 문서 및 사이트

 

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/typed-object-pointer-properties-in-unreal-engine?application_version=5.1

https://dev.epicgames.com/documentation/ko-kr/unreal-engine/asynchronous-asset-loading?application_version=4.27

https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/CoreUObject/UObject/TSoftClassPtr?application_version=5.4

https://velog.io/@whoamicj/UE5-%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%95%A0%EC%85%8B-%EB%A1%9C%EB%94%A9-TSoftObjectPtr%EC%99%80-TSubclassOf%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90