※本記事の内容はUE4にも適用できます。
Unreal Engineのブループリント(以下、BP)のデバッグ作業などで、非常に便利なPrintString関数。
C++の実装作業においても便利ですが、C++を使い始めたばかりの人にとっては、呼び出し方がわからない場合があるかと思います。
本記事では、C++でPrintString関数を呼び出す方法を説明します。
C++でのPrintString関数の呼び出し方法
以下2つの手順で呼び出しが可能です。それぞれ説明していきます。
- UKismetSystemLibraryクラスのインクルード
- PrintString関数の呼び出し
1. UKismetSystemLibraryクラスのインクルード
PrintString関数は、UKismetSystemLibraryクラスに定義されています。
ソースファイルの一番上に、以下のインクルード文を記載します。
#include "Kismet/KismetSystemLibrary.h"
2. PrintString関数の呼び出し
直接文字列を出力する場合と、変数の値を出力する場合について説明します。
直接文字列を出力する場合
例として、下図のBPのPrintString関数と同じ処理をC++で実装します。
C++では、呼び出したい場所に、以下のPrintString関数を記載します。 3つ目以降の引数は省略も可能です。
// 省略しない場合
UKismetSystemLibrary::PrintString(GEngine->GetWorld(), "Hello", true, true, FLinearColor(0.0f, 0.66f, 1.0f, 1.0f), 2.0f);
// 省略した場合
UKismetSystemLibrary::PrintString(GEngine->GetWorld(), "Hello");
なお、BPとC++の関数の入力(引数)の対応関係は以下のようになっています。
変数の値を出力する場合
下図のBPのように、変数の値を出力したいことが多いと思います。
C++では、以下のソースコードが上図と同じ処理となります。
FString::SanitizeFloat(Val)で、float型の変数Valを文字列(FString型)に変換しています。
UKismetSystemLibrary::PrintString(GEngine->GetWorld(), FString::SanitizeFloat(Val), true, true, FLinearColor(0.0f, 0.66f, 1.0f, 1.0f), 2.0f);
文字列への主な変換は、以下のとおりです(変換元の変数名はValとしています)。
変換元の型 | 文字列への変換 |
---|---|
float | FString::SanitizeFloat(Val) |
int | FString::FromInt(Val) |
FVector | Val.ToString() |
その他の型からの変換は、以下の公式ドキュメントにまとめられていますので、気になる方はご参照ください。
3. サンプル
1, 2項で示した方法による、PrintString関数の使用例は以下のとおりです。
float型の入力A, Bを足した結果を画面上に表示する例です。
#include "Hoge.h"
#include "Kismet/KismetSystemLibrary.h" // UKismetSystemLibraryクラスが定義されたヘッダファイルのインクルード
void UHoge::Func(float A, float B)
{
float Out = A + B;
// PrintString関数の呼び出し
UKismetSystemLibrary::PrintString(GEngine->GetWorld(), FString::SanitizeFloat(Out), true, true, FLinearColor(0.0f, 0.66f, 1.0f, 1.0f), 2.0f);
}
以上が、C++でPrintString関数を呼び出す方法です。
【宣伝】
Colory Gamesでは、Unreal Engine C++の入門書をBoothで販売しています。
対話形式でわかりやすく説明しています。