以下を参考にさせてもらいました。
https://htsuda.net/archives/1815
プロジェクトファイル(拡張子が .uproject となっているファイル)があるフォルダの中に Source という名前のフォルダをまず作成します。次にC++ プロジェクトを作成します。プロジェクトファイルを右クリックすると、メニューの中に Generate Visual Studio project files というのがあるのでそれをクリックします。
レベルエディタのメニューから「ファイル File」> 「新規C++クラス New C++ Class」を選びます。親クラスは Actor にします。ファイル名は SaveToText とします。公開設定はパブリックを選んでおきます。クラス作成ボタンを押すとしばらくのコンパイル時間の後にヘッダファイルと cpp ファイルが作成され、VS が開きます。
C++ のエディタが開いていない場合はコンテンツブラウザの C++ クラス(C++ Classes)フォルダ内にある SaveToText のファイルをダブルクリックします。そして、SaveToText.hと SaveToText.cpp を下記のように書き換えます。
クラス名の自動生成されている部分class ゲーム名_APIは書き換えずにおきます。
class AMBITIONEARLYHOURSKY_API USaveToText : public UBlueprintFunctionLibrary
あとは
public: の行以下の部分を追加するだけでOKです。
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "SaveToText.generated.h"
UCLASS()
class AMBITIONEARLYHOURSKY_API USaveToText : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "save")
static bool FileSaveString(FString SaveTextB, FString FileNameB);
UFUNCTION(BlueprintPure, Category = "save")
static bool FileLoadString(FString FileNameA, FString& SaveTextA);
UFUNCTION(BlueprintCallable, Category = "save")
static FString FileLoadAndReturnString(FString FileNameA);
};
cpp ファイルも下記記のように編集します。以下のコードは https://answers.unrealengine.com/questions/174839/loading-text-to-a-string.html で紹介されているものです(保存以外にもテキストファイルの読み込み関数があります)。ちなみに、クラス名は ASaveToText と先頭に A が付いていますが、これが U であったりする場合もあります。その場合は cpp ファイルの中でクラス名が付いている箇所もそれに合わせるようにしてください。コンパイル時にエラーが出た時はヘッダと cpp ファイルでクラス名が一致していないことが原因だと思われます
// Fill out your copyright notice in the Description page of Project Settings.
#include "SaveToText.h"
// Load and save text files
bool USaveToText::FileSaveString(FString SaveTextB, FString FileNameB)
{
return FFileHelper::SaveStringToFile(SaveTextB, *( FileNameB));
}
bool USaveToText::FileLoadString(FString FileNameA, FString& SaveTextA)
{
return FFileHelper::LoadFileToString(SaveTextA, *( FileNameA));
}
FString USaveToText::FileLoadAndReturnString(FString FileNameA)
{
FString myString;
bool myBool = true;
myBool = FFileHelper::LoadFileToString(myString, *( FileNameA));
return myString;
}
h と .cpp ファイルを保存したら、UE4 のエディタ上でコンパイルボタン(ビルドボタンの右にある)を押します。コンパイルが成功したら作ったこの関数をブループリントで使えるようになります。
レベルブループリントなどを開いて記事冒頭のようなノードを組みます。
そして実行すれば、プロジェクトフォルダ内にテキストファイルが保存されています。やりました!
コメント