반응형
UDataTable->FindRow에서 ContextString의 의미는 검색을 제대로 못할 경우 메시지 출력할때 이 스트링을 포함하여 출력합니다.
template <class T>
T* FindRow(FName RowName, const FString& ContextString, bool bWarnIfRowMissing = true)
다음의 코드를 보면 ContextString이 어떻게 출력되는지 알 수 있습니다.
코드가 의도하는 것은 DataTable '%s'이며 테이블의 이름을 넣어 주면 에러 발생시 어떤 테이블인지 알 수 있어서 유용합니다.
if(RowStruct == nullptr)
{
UE_LOG(LogDataTable, Error, TEXT("UDataTable::FindRow : '%s' specified no row for DataTable '%s'."), ContextString, *GetPathName());
return nullptr;
}
if(!RowStruct->IsChildOf(T::StaticStruct()))
{
UE_CLOG(bWarnIfRowMissing, LogDataTable, Error, TEXT("UDataTable::FindRow : '%s' specified incorrect type for DataTable '%s'."), ContextString, *GetPathName());
return nullptr;
}
if(RowName == NAME_None)
{
UE_CLOG(bWarnIfRowMissing, LogDataTable, Warning, TEXT("UDataTable::FindRow : '%s' requested invalid row 'None' from DataTable '%s'."), ContextString, *GetPathName());
return nullptr;
}
uint8* const* RowDataPtr = GetRowMap().Find(RowName);
if (RowDataPtr == nullptr)
{
if (bWarnIfRowMissing)
{
UE_LOG(LogDataTable, Warning, TEXT("UDataTable::FindRow : '%s' requested row '%s' not in DataTable '%s'."), ContextString, *RowName.ToString(), *GetPathName());
}
return nullptr;
}
'게임 개발 > Unreal Engine' 카테고리의 다른 글
[UE5] TObjectPtr<T> 소개 (0) | 2022.05.10 |
---|---|
[UE5] Quixel Bridge가 보이지 않는 현상 수정 (0) | 2022.05.02 |
[UE4] 타입으로 모든 Asset 찾기 (0) | 2022.04.22 |
[UE4] 디스턴스 필드 소프트 섀도(Distance Field Soft Shadows) (0) | 2022.04.16 |
[UE4] TArray 퍼포먼스 최적화 (0) | 2022.04.16 |