【UE4】文件读写

新建GameMode类继承自GameMode.base

MyGameMode.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "Engine/DataTable.h"
#include "MyGameModeBase.generated.h"

/**
 * 
 */
USTRUCT(BlueprintType)
struct FUserInfo
{
	GENERATED_BODY()

	UPROPERTY(BlueprintReadWrite, Category = "UserInfo")
		FString Name;

	UPROPERTY(BlueprintReadWrite, Category = "UserInfo")
		FString ThrearType;

	UPROPERTY(BlueprintReadWrite, Category = "UserInfo")
		int Score;

	UPROPERTY(BlueprintReadWrite, Category = "UserInfo")
		FDateTime SubmitTime;
};

USTRUCT(BlueprintType)
struct FUserInfoString
{
	GENERATED_BODY()

		UPROPERTY(BlueprintReadWrite, Category = "UserInfo")
		TArray<FString>InfoString;
};

UCLASS()
class TEMPLATE_THREAT_API AMyGameModeBase : public AGameModeBase
{
	GENERATED_BODY()
	
public:
	UFUNCTION(BlueprintCallable, Category = "MyGameMode")
		void ExportUserInfo(TArray<FUserInfoString>UserInfoString, TArray<FString>Header);
	
	
};

MyGameMode.cpp

// Fill out your copyright notice in the Description page of Project Settings.

#include "MyGameModeBase.h"
#include "FileHelper.h"
#include "Paths.h"

void AMyGameModeBase::ExportUserInfo(TArray<FUserInfoString>UserInfoString, TArray<FString>Header)
{
	FString ExportedText;

	//Write the header
	ExportedText += TEXT("---");
	for (auto& Str : Header)
	{
		ExportedText += TEXT(",");
		ExportedText += Str;
	}
	ExportedText += TEXT("\n");

	//Write the body
	for (int32 Index = 0; Index != UserInfoString.Num(); ++Index)
	{
		ExportedText += FString::FromInt(Index + 1);
		for (auto& Str :UserInfoString[Index].InfoString)
		{
			ExportedText += TEXT(",");
			ExportedText += TEXT("\"");
			ExportedText += Str.Replace(TEXT("\""), TEXT("\"\""));
			ExportedText += TEXT("\"");
		}
		ExportedText += TEXT("\n");

	}

	//Save in utf-8
	FFileHelper::SaveStringToFile(ExportedText, *(FPaths::ProjectDir() + "Score.csv"), FFileHelper::EEncodingOptions::ForceUTF8);


}

蓝图类SaveGame

在这里插入图片描述

BP_GameMode(继承自MyGameMode)

在这里插入图片描述
在这里插入图片描述

使用:

		1.示例类似一个考核系统,首先将需要保存的信息先通过savegame存储(调用SubmitScore),比如示例中保存的是姓名、科目、成绩、提交时间 ;
		2.在考核结束后,调用ExportData即可,在本地会出现一个Score数据表格记录成绩信息(FPaths::ProjectDir() + "Score.csv");
		3.需要将信息传送到服务器端的话,启用VaRest插件跟着文档操作即可。
		https://blog.csdn.net/qq_40997637/article/details/94591111

在这里插入图片描述

  • UE4从服务器下载、向服务发送Json数据
  • 链接:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在UE4中保存CSV文件主要分为两个步骤:准备数据和保存文件。 首先,你需要准备好要保存为CSV格式的数据。可以使用TArray或TMap等UE4的容器类来存储数据。以TArray为例,假设你有一个简单的结构体来表示每行数据: ```cpp struct FCSVRow { FString Name; int32 Age; float Height; }; ``` 然后,你可以创建一个TArray来存储多行数据: ```cpp TArray<FCSVRow> CSVRows; // 添加数据至CSVRows FCSVRow Row1; Row1.Name = TEXT("小明"); Row1.Age = 20; Row1.Height = 175.5f; CSVRows.Add(Row1); FCSVRow Row2; Row2.Name = TEXT("小红"); Row2.Age = 25; Row2.Height = 160.0f; CSVRows.Add(Row2); ``` 接下来,你可以使用UE4中的FFileHelper类的静态函数来保存CSV文件: ```cpp FString CSVText; for (const FCSVRow& Row : CSVRows) { CSVText += FString::Printf(TEXT("%s,%d,%f\n"), *Row.Name, Row.Age, Row.Height); } FString SavePath = FPaths::ProjectDir() + TEXT("Saved/CSVFile.csv"); FFileHelper::SaveStringToFile(CSVText, *SavePath); ``` 在上述代码中,CSVText会存储整个CSV文件的文本内容,循环遍历CSVRows将每行数据转化为文本,并使用Printf函数格式化为CSV格式的字符串。最后,使用SaveStringToFile函数将CSVText保存到指定路径。 请注意,保存文件需要指定一个路径。在上述代码中,SavePath为CSV文件的保存路径,可以根据实际需求进行更改。 完成上述步骤后,运行UE4项目即可保存CSV文件。 ### 回答2: 在UE4中保存CSV文件有多种方法。首先,我们可以使用CSVWriter类来创建和保存CSV文件。这个类允许我们将数据以逗号分隔的格式写入文件。 首先,我们需要包含"CSVWriter.h"头文件,并创建一个CSVWriter对象。然后,我们可以使用CSVWriter的AddRow函数将数据逐行添加到CSV文件中。 例如,我们可以创建一个名为"mydata.csv"的文件,并将一些数据写入它: ```cpp #include "CSVWriter.h" void SaveToCSV() { FString FilePath = FPaths::ProjectDir() + FString("mydata.csv"); TCSVWriter<> CSVWriter(FilePath); CSVWriter.AddColumn(TEXT("Name")); CSVWriter.AddColumn(TEXT("Score")); CSVWriter.AddRow({ TEXT("John"), TEXT("90") }); CSVWriter.AddRow({ TEXT("Jane"), TEXT("85") }); CSVWriter.AddRow({ TEXT("Tom"), TEXT("95") }); CSVWriter.Save(); } ``` 这将在项目目录下创建一个名为"mydata.csv"的文件,并将以下数据写入其中: ``` Name,Score John,90 Jane,85 Tom,95 ``` 另一种方法是使用UE4的FFileHelper类来保存CSV文件。这个类提供了一些静态函数来处理文件操作。 我们可以使用FFileHelper::SaveStringToFile函数将CSV数据直接保存到文件中。例如: ```cpp #include "FileHelper.h" void SaveToCSV() { FString FilePath = FPaths::ProjectDir() + FString("mydata.csv"); FString CSVData = TEXT("Name,Score\nJohn,90\nJane,85\nTom,95"); FFileHelper::SaveStringToFile(CSVData, *FilePath); } ``` 这将创建一个名为"mydata.csv"的文件,并将相同的数据写入其中。 无论使用哪种方法,保存CSV文件都是相对简单的,在UE4中可以方便地进行操作。 ### 回答3: 使用Unreal Engine 4(UE4)保存CSV文件需要遵循以下步骤: 1. 首先,确保项目中包含了所需的文件读写功能。在UE4编辑器的“编辑”菜单下选择“插件管理器”,然后在插件管理器中搜索“File Save Plugin”并启用它。这个插件会添加一些额外的文件读写功能。 2. 在UE4中,创建一个蓝图或C++类来实现保存CSV文件的功能。选择一个合适的类,例如游戏模式类或一个自定义的蓝图类。 3. 在类中,创建一个保存CSV文件的函数。对于蓝图,可以使用“新增自定义事件”来创建一个新的函数。对于C++类,可以创建一个新的公有函数。 4. 在函数内部,使用文件读写功能来创建和保存CSV文件。使用FFileHelper类中的一些函数,如FFileHelper::SaveStringToFile(),将要保存的CSV数据以字符串形式保存到磁盘上的指定位置。 5. 使用FPaths类中的一些函数,如FPaths::ProjectSavedDir(),来获取项目的保存路径。然后根据需要创建一个保存CSV文件的完整路径。 6. 创建CSV文件的头部,包含列的标题或属性名称。这通常是CSV文件的第一行,在保存CSV文件之前作为字符串变量添加到要保存的字符串中。 7. 将CSV数据按行添加到要保存的字符串中。确保将每个字段用逗号分隔,并且每个行末都有一个换行符。 8. 最后,使用FFileHelper::SaveStringToFile()函数将保存的字符串写入到指定路径的CSV文件中。这将把CSV文件保存到项目的保存路径中。 以上是在UE4中保存CSV文件的步骤。可以根据实际需求对代码进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值