UE는 로컬 csv 파일을 읽고, 순환 읽기 줄에서crash 충돌이 발생합니다 ----- 노트

1499 단어 UE4
다음 코드를 통해 가져오십시오.csv 파일은 DataTable 포인터가 됩니다.전체 과정은 인터넷 조회를 참고할 수 있다.
UDataTable *UActionActorComponent::ReadUserCSV(FString CSV_file_path, FName CSV_lable)
{
	FString AbsoluteFilePath = CSV_file_path; // FPaths::RootDir() + CSV_file;
	UE_LOG(LogTemp, Error, TEXT("%s"), *AbsoluteFilePath);
	FString Data;
	if (FFileHelper::LoadFileToString(Data, *AbsoluteFilePath))
	{
		UDataTable *DataTable = NewObject(GetTransientPackage(), CSV_lable);
		DataTable->RowStruct = FPatrolTask::StaticStruct();
		DataTable->CreateTableFromCSVString(Data);
		return DataTable;
	}
	else
	{
		UE_LOG(LogTemp, Error, TEXT("can't found the .CSV file,please check the action file"));
		return 0;
	}
}

위에서 얻은 지침을 이용하여 표의 줄마다 순환하여 읽습니다. 순환적으로 실행되는 코드는 다음과 같습니다.
FString ContextFString;
FName row_name = FName(*(FString::FromInt(row_num)));
FPatrolTask *pRow = talk_au->FindRow(row_name, ContextFString);

위 코드를 반복해서 실행하면 캐시 충돌 문제가 발생할 수 있으며, 구체적인 원인은 don't konw입니다.csv 파일을 UE에서 DataTable 파일로 가져온 다음 DataTable 파일을 읽을 수 있습니다.이런 문제는 없었을 겁니다.코드에서 DataTable 포인터를 가져옵니다.
UDataTable *rest_au = LoadObject(NULL, UTF8_TO_TCHAR("DataTable'/Game/BluePrints/rest.rest'"));
//    rest,csv        C++         。

DataTable 파일 읽기 참조:https://www.jianshu.com/p/6488c790daa3
https://www.dazhuanlan.com/2020/01/20/5e250cc27dcd3/

좋은 웹페이지 즐겨찾기