【UE4】文件读写

UE4游戏模式及数据传输应用
博客介绍了MyGameMode的头文件和源文件,蓝图类SaveGame,以及继承自MyGameMode的BP_GameMode。还提及了UE4从服务器下载和向服务器发送Json数据的使用情况。
新建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.youkuaiyun.com/qq_40997637/article/details/94591111

在这里插入图片描述

  • UE4从服务器下载、向服务发送Json数据
  • 链接:
### UE5 中的文件读写操作 在 Unreal Engine 5 (UE5) 中,可以通过 `FFileHelper` 类来实现简单的文件读取和写入操作。以下是关于如何使用此类完成基本文件 I/O 的说明以及示例代码。 #### 使用 `FFileHelper` 进行文件读取 通过调用 `FFileHelper::LoadFileToString()` 方法可以轻松加载整个文件到字符串中。这种方法适用于小型文本文件的快速读取。 ```cpp #include "Misc/FileHelper.h" #include "HAL/PlatformFileManager.h" void ReadFile(const FString& FilePath) { FString FileContent; if (FFileHelper::LoadFileToString(FileContent, *FilePath)) { UE_LOG(LogTemp, Display, TEXT("File Content: %s"), *FileContent); } else { UE_LOG(LogTemp, Warning, TEXT("Failed to read file at path: %s"), *FilePath); } } ``` 上述方法实现了从指定路径读取文件并将其内容存储在一个 `FString` 对象中的功能[^1]。 #### 使用 `FFileHelper` 实现文件写入 对于文件写入操作,则可以利用 `FFileHelper::SaveStringToFile()` 函数将字符串保存至目标位置。 ```cpp bool WriteFile(const FString& FilePath, const FString& ContentToWrite) { return FFileHelper::SaveStringToFile(ContentToWrite, *FilePath); } ``` 如果函数返回 true 表明成功完成了写入动作;反之则失败。 #### 综合应用实例 下面给出一段综合运用以上两种技术的小例子: ```cpp // 定义文件路径 const FString MyFilePath = FPaths::ProjectDir() / TEXT("MyTestFile.txt"); // 测试写入数据到文件 if(WriteFile(MyFilePath, TEXT("Hello, this is a test!"))) { UE_LOG(LogTemp, Log, TEXT("Successfully wrote data to the file.")); // 尝试重新读回刚才写入的数据 ReadFile(MyFilePath); } else { UE_LOG(LogTemp, Error, TEXT("Could not write to specified location")); } ``` 这段脚本首先定义了一个位于项目根目录下的测试文件名,接着尝试向其中写入一些文字信息,最后再把刚刚存进去的信息打印出来验证结果是否一致[^3]。 #### 注意事项 尽管上面展示的方法非常简便易懂,但在真实的游戏开发场景里还需要考虑更多因素比如异常处理机制、多线程安全等问题。此外,当涉及到较大规模的数据交换时建议采用更高效专业的库或者框架来进行管理[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值