Open8

Tips of Unreal Engine4 with C++

しんとみしんとみ

UE4 C++でのファイルへの出力の仕方
ref: https://forums.unrealengine.com/t/creating-a-text-file-in-c/89844/6

https://docs.unrealengine.com/4.27/en-US/API/Runtime/Core/Misc/FFileHelper/

#include "Misc/FileHelper.h"
#include "Misc/Paths.h"

FString FilePath = FPaths::ConvertRelativePathToFull(FPaths::GameUserDeveloperDir()) + TEXT("/MessageLog.txt");
FString FileContent = TEXT("Hello, world!");
FFileHelper::SaveStringToFile(FileContent, *FilePath, FFileHelper::EEncodingOptions::AutoDetect, &IFileManager::Get(), EFileWrite::FILEWRITE_Append);
しんとみしんとみ

問題: static meshをlighting buildした後、game play中にstatic meshが突然真っ黒になる現象
解決方法: static meshの属性をLighting->Lightmap Type->deafultからLighting->Lightmap Type->Force Voluemtericに変更する
原因: 不明。UV周りは関係なさそう。

しんとみしんとみ

UE4のエディタ上でscreen shotを撮影する
ref: https://orenda.co.jp/blog/1791/

https://docs.unrealengine.com/4.26/en-US/API/Runtime/Engine/FScreenshotRequest/

#include "UnrealClient.h"
#include "Misc/Paths.h"

FString filePath = FPaths::ConvertRelativePathToFull(FPaths::GameUserDeveloperDir()) + TEXT("/screenshot.png");
FScreenshotRequest screenshotRequest = FScreenshotRequest();
screenshotRequest.RequestScreenshot(filePath, false, false);

またscreen shotの画像のサイズはplay中の画面のサイズに依存するため、フルスクリーンモードだとより高解像度のscreen shotを撮影することができる。

しんとみしんとみ

Linux上のUE4とVSCodeのintelligenceとinclude pathの解決

ref: https://qiita.com/mt_khmer/items/f0625b2e8ae42901f8bb
ref: https://community.gamedev.tv/t/unreal-engine-c-dev-include-path-not-defined-cant-find-iostream-help/104944/3

UE4 on Ubuntu with VSCodeの設定でintelligenceとinclude pathの解決はそれぞれ<project root>/.vscode/c_cpp_properties.jsonconfigurations -> nameと同じレベルに以下の記述をする。
ただしproject nameをTestとする。

"defines":   [
    "UE_PROJECT_NAME=Test",
    "TEST_VTABLE=DLLEXPORT_VTABLE",
    "TEST_API="
]
"includePath" : [
    "${workspaceFolder}/**"
]
しんとみしんとみ

Unreal Engine 4をLinuxでビルドしてそれをgit管理する場合の問題

Unreal Engineのビルドバージョンが異なることによるエラー

.uprojectEngineAssociationはLinuxでビルドした場合GUID(UUIDの1種)が振られる。
https://historia.co.jp/archives/3113/

.uprojectファイルはgit管理下に置くことが望ましいが、ビルド環境によって異なる値が振られる。
そこで~/.config/Epic/UnrealEngine/Install.iniに書かれてるEngineと対応するGUIDを統一(例えばGUIDをすべて0埋め)することで、この問題は解決する。
https://github.com/ibbles/LearningUnrealEngine/blob/master/Engine association and versions.md