解決法
結論から言います!
- #include (ヘッダーファイル名).generated.hを消してしまった
- #include (ヘッダーファイル名).generated.hより下にincludeを書いてしまった
が主な原因で、
- 手書きで#include “MyActor.generated.h”のように付け加える
- #include “Kismet/BlueprintFunctionLibrary.h”みたいなのを追加したい場合は、include “MyActor.generated.h”より上に付け加える
で大体の場合は解決するかなーと思います!
Error: #include found after .generated.h file – the .generated.h file should always be the last #include in a header
みたいなエラー原因もログとして一応出ますが。。。初心者の時は焦りますよね笑
消してしまった場合
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
// 本来あるべき#include "MyActor.generated.h"が消えている…!
UCLASS()
class LEARNINGUE5_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
原因はいろいろあるでしょうけど、generated.hを間違って消してしまった場合…とりあえず「#include "(ヘッダーファイル名).generated.h"」を足すことで解決するかもしれません
ここでincludeの(ヘッダーファイル名)に入るのはクラスの名称「例: AMyActor」ではなく、現在のファイル名を書きましょう
これで解決しなかったら…さらに下の解決法も試していきます
# generated.hより下に#includeを足さない
// 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 // ここはOK
#include "MyActor.generated.h"
#include "Kismet/BlueprintFunctionLibrary.h // ここはダメ
UCLASS()
class LEARNINGUE5_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
何か足してきたいときは下に下にと増やしていきたい気持ちもあり、generated.hより下に足してしまうなんてこともよくあります。ですが、こちらもエラーの原因となるので、generated.hよりも上にincludeを足しましょう。
ファイル名を変更した
ファイル名を変更した場合は少しややこしい事態になるのですが
- 元のファイル名に戻す
- #include (現在のファイル名).generated.hにする
のどちらかで解決すると思います。
“プロジェクト名\Intermediate\Build\Win64\UnrealEditor\Inc\LearningUE5\UHT”
に該当のヘッダーがあるのですが、こことのずれで起こるエラーです
ずっと変更後にしたい!という場合は、IntermediateとBinariesフォルダを削除してプロジェクトを開きなおすとビルドが始まるので、(includeの現在のファイル名をちゃんと現在のにしていれば)エラーは解消されるはずです。