Unreal Engine公式のC++のチュートリアル
変数、タイマー、イベントをやったのですが
かなり詰まったので色々まとめておきます。
開発環境は
- UE5(Version: 5.0.3)
- Visual Studio2022
です。
UE4の人も使えるかもしれないので
詰まってここに辿り着いた方は見てみてください。
- HowTo_VTEが無い
- UTextRenderComponentでコンパイルエラー
- CountdownText->SetTextでコンパイルエラー
- Fatal error LNK1181: cannot open input file ~
- オーバライド関係
HowTo_VTEが無い
「HowTo_VTEを使用して」とありますが
このスターターコンテンツが見つかりませんでした。
代わりにFirst Personテンプレートでプロジェクトを
作ってうまくいったのでどのテンプレートでも大丈夫だと
思います。
UTextRenderComponentでコンパイルエラー
Countdown.cppで
#include "Components/TextRenderComponent.h"
を追加する手順ですが
Countdown.cppではなくCountdown.hに
追加をします。
最終的にインクルードするファイルは
Countdown.hでは
#include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "Components/TextRenderComponent.h" #include "Countdown.generated.h"
Countdown.cppでは
#include "Countdown.h"
でうまくいきました。
【参考】
インクルードする順番の注意
"Countdown.generated.h"ファイルは
必ず最後にインクルードしてください
"Countdown.generated.h"の下の行で
何かをインクルードすると下記のエラーが出ます。
Error: #include found after .generated.h file - the .generated.h file should always be the last #include in a header
generated.hファイルは最後に記述するのが
UEでのルールのようです。
CountdownText->SetTextでコンパイルエラー
エラーが出ている箇所を下記のように書き換えて
うまくいきました。
void ACountdown::UpdateTimerDisplay() { CountdownText->SetText(FText::AsNumber(FMath::Max(CountdownTime, 0))); } void ACountdown::CountdownHasFinished_Implementation() { CountdownText->SetText(FText::FromString("GO!")); }
【参考】
Fatal error LNK1181: cannot open input file ~
チュートリアルを行っている途中で急に
発生しました。
これは正しい解決策がわかりませんでした。
とりあえずの対応ですがLiveCodingをオフにしたら
Buildが通るようになりました。
LiveCodingをオフにする方法はこちらを参照してください。
オーバライド関係
エラーなどの問題ではないのですが
「なぜCountdownHasFinished()を呼び出して
CountdownHasFinished_Implementation()も
呼び出されているのか」がわかりませんでした。
こちらのサイトを見つけそういう仕組みに
なっているということと、
C++とBPの両方でオーバライドができる関数を作っていた
ことがわかりました。
以上です。
他のチュートリアルも詰まりそうな気がしていて
もう既に苦しいですがなにかあったらまた書きます。