在项目中创建一个新的C++类
并不是任意位置都可以创建。在C++项目中会有一个专用的文件夹用来存储C++的类,需要在这里创建。
选择继承自 Blueprint Function Library
类
进行一个命名。之后会在本地工程文件中生成两个文件 .h
和 .cpp
。路径为 Project/Source/name_of_project
。也可以直接在虚幻引擎中打开 Visual Studio
然后在资源管理器中找到。
编辑一下这两个代码文件:
对于 .h
文件,定义了一个名为 URWer
的蓝图函数库类,提供了两个静态函数 ReadTxt
和 WriteTxt
,并且设置 BlueprintCallable
可以方便地在蓝图中调用。
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "RWer.generated.h"
/**
*
*/
UCLASS()
class LIDARPROJECT_API URWer : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable)
static FString ReadTxt(FString Filename);
UFUNCTION(BlueprintCallable)
static bool WriteTxt(FString content, FString Filename);
};
对于 .cpp
文件,完善了两个函数的内容。Containers/UnrealString.h: 包含了 FString
类的定义,用于处理字符串。
// Fill out your copyright notice in the Description page of Project Settings.
#include "RWer.h"
#include "Containers/UnrealString.h"
FString URWer::ReadTxt(FString Filename) {
FString resultString;
FFileHelper::LoadFileToString(resultString, *(FPaths::ProjectContentDir() + Filename));
return resultString;
}
bool URWer::WriteTxt(FString content, FString filename) {
bool result;
content.Append("\n");
result = FFileHelper::SaveStringToFile(content, *(FPaths::ProjectContentDir() + filename), FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), FILEWRITE_Append);
return result;
}
重新加载虚幻引擎后,即可在蓝图中调用这两个函数。
注:两个函数中的 filename
参数的起始路径是 Content
文件夹。建议在 Content
文件夹下新建子文件夹 Txt
并在其中存储 .txt
文件进行读写。此时 filename
变量应该为 Txt/1.txt
,蓝图中可以用 /
斜杠表示路径。