TryLoad를 사용하여 TSoftObjectPtr을 Load하는 경우

2025. 7. 16. 17:47·🧭 Devlog/오답노트

잘못된 부분

FSoftObjectPath SkeletalMeshPath(Mesh.ToSoftObjectPath());
USkeletalMesh* SkeletalMesh = Cast<USkeletalMesh>(SkeletalMeshPath.TryLoad());
if (SkeletalMesh != nullptr)
{
	MeshesToMerge.Add(SkeletalMesh);
}

수정된 부분

TSoftObjectPtr<USkeletalMesh> MeshPtr = MeshArray.Get(Index);
if (!MeshPtr.IsNull())
{
	USkeletalMesh* SkeletalMesh = MeshPtr.LoadSynchronous();
	if (ensureAlways(SkeletalMesh))
	{
		MeshesToMerge.Add(SkeletalMesh);
	}
}

무엇이 잘못됐나?

FSoftObjectPath SkeletalMeshPath(Mesh.ToSoftObjectPath());
USkeletalMesh* SkeletalMesh = Cast<USkeletalMesh>(SkeletalMeshPath.TryLoad());

는 LoadSynchronous에서 내부적으로 처리하고 있는 로직이다.

	UObject* LoadSynchronous() const
	{
		UObject* Asset = Get();
		if (Asset == nullptr && !IsNull())
		{
			ToSoftObjectPath().TryLoad();

			// TryLoad will have loaded this pointer if it is valid
			Asset = Get();
		}
		return Asset;
	}

따라서 한 줄로 간편하게 쓸 수 있는 LoadSynchronous() 를 사용한다. 또한 어떤 값이 null이 아니면 안될 때는 디버그하기 쉽게 ensureAlways를 사용하여 assert를 내주자.

앞으로…

  • 앞으로 모르는 함수를 사용할 땐 꼭 함수 내부를 보고 어떻게 동작하는지 확인하자.
  • 우리 코드에서 비슷한 내용을 찾아 어떻게 사용하고 있는지 참고한다.
  • n == nullptr 이런식으로 null 체크를 할 때, 만약 이 부분이 null이면 안되는 건지 아니면 아니어도 그냥 넘어갈 수 있는지 구별해야한다. 다양한 assert 구문을 알아두면 좋을 것 같다.
저작자표시 비영리 변경금지 (새창열림)

'🧭 Devlog > 오답노트' 카테고리의 다른 글

[Unreal]Get() 사용하여 TSoftObjectPtr 데이터를 Load하는 경우  (0) 2025.07.16
[UnrealEngine] VS에서 Ctrl + F5 눌렀을 때 "Unable to start debugging. check your debugger settings by opening project properties ..." 오류  (2) 2023.06.30
C/C++ 매크로 연산 오류 해결하기 (E0075, C2100)  (0) 2022.01.25
'🧭 Devlog/오답노트' 카테고리의 다른 글
  • [Unreal]Get() 사용하여 TSoftObjectPtr 데이터를 Load하는 경우
  • [UnrealEngine] VS에서 Ctrl + F5 눌렀을 때 "Unable to start debugging. check your debugger settings by opening project properties ..." 오류
  • C/C++ 매크로 연산 오류 해결하기 (E0075, C2100)
Beankong_
Beankong_
주니어 클라이언트 프로그래머 공부 기록
  • Beankong_
    Beankong's Devlog
    Beankong_
  • 전체
    오늘
    어제
    • 전체 글 (146)
      • ⛅ Daily (0)
      • 🖥️ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • 🧭 Devlog (8)
        • 오답노트 (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      그래프 순회
      코딩테스트
      OnlineSubsystem
      프로그래머스
      최단 거리 알고리즘
      게임프로그래밍
      게임 프로그래밍
      프료그래머스
      propertyaccess
      게임 개발
      그리디(greedy)
      UnrealEngine5
      unrealengine build system
      cpp
      programmers
      UnrealEngine
      헬테이커
      unrealengine module
      알고리즘
      게임 모작
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    Beankong_
    TryLoad를 사용하여 TSoftObjectPtr을 Load하는 경우
    상단으로

    티스토리툴바