【UnrealEngine】新規C++クラス作成時のヘッダーファイルを理解する
以前ソースファイルについて、どのような内容が記述されているのかを確認していきましたので、今回はヘッダーファイルを見ていきたいと思います。
▼ソールファイルについての記事はこちら▼
デフォルトの理解をするのは重要になると思うのでしっかり見ていきましょう!
◆全体のコード
デフォルトのコード
// ===========================
// ▼ここから
// ===========================
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestActpr.generated.h"
UCLASS()
class CPPPROJECT_API ATestActpr : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
ATestActpr();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
// ===========================
// ▲ここまで
// ===========================
◆各種コードについて
// Fill out your copyright notice in the Description page of Project Settings.
「//」で始まる行は、処理に影響はなく、無視されます。つまりメモ書きのようなものですね。
#pragma once
このヘッダーファイルは1回だけ読み込む
なんで必要なのか?
➥同じヘッダーファイルが何度も読み込まれてしまうと「定義が重複」してしまったり、「コンパイルエラー」になってしまうため、1回だけ読み込むというコードを記述しておく必要がある。
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "TestActpr.generated.h"
#includeは対象のヘッダーファイルをこのファイルに読み込むというコードになります。各種ファイルのクラスなどを使用するため、ここではいくつかのヘッダーファイルを読み込んでいます。
・CoreMinimal.h
➥Unrealの基本セット
- 基本型(int , float など)
- FString、FVector
- UEの基本機能
・GameFramework/Actor.h
➥AActorクラスを使用するため。
・TestActpr.generated.h(必須)
➥UnrealHeaderToolが自動生成するコードを読み込む
役割:「UCLASS」「UPROPERY」「UFUNCTION」を機能させる。
※必ずincludeの一番下に記述する。
UCLASS()
意味:このクラスはUnrealの管理対象である。
★何ができるようになるのか?
・Blueprintで使用できる
・エディタに表示される
・GC(ガベージコレクション)対象
※このコードがないと「ただのC++クラス」になってしまいUEと連携しない。
class CPPPROJECT_API ATestActpr : public AActor
こちらは分解して見ていきましょう!
・class
➥クラスを定義する=「設計図」を作ること
※クラスを定義すると「この構造のオブジェクトが作れる」ようになったり「変数と関数を持てる」ようになります。
・CPPPROJECT_API
➥モジュール間で使うための指定
・ATestActpr
➥クラス名
➥頭文字のAは「Actorクラスを意味する」。命名ルールで頭についている。
・public AActor
➥AActorを継承
全体をまとめると「ATestActprはAActorをベースにしたクラス」となる。
GENERATED_BODY()
Unreal用の内部コードを自動生成する。「リフレクション」や「BP連携」、「GC対応」をしている。このコードがないとUE機能が全部壊れてしまう。
public:
外からアクセス可能にするコード
どこからでもアクセスが可能で、Blueprintからでも触ることができる。
AtestActpr();
生成時に呼ばれる関数。中身は設定されてなく、実装はソースファイルで行う。
protected:
自分+子クラスのみが使うことができる
変数はprotectedに記述するのが良いそうな
virtual void BeginePlay() override;
・virtual
➥オーバーライド可能
・void
➥戻り値なし
・BeginePlay()
➥ゲーム開始時に呼ばれる
・override
➥親クラスを上書き
まとめると「AActorのBeginePlayを上書きして使う」という内容になります。
virtual void Tick(float DeltaTime) override;
・Tick
➥毎フレーム実行
・float DeltaTime
➥前フレームからの時間
※FPS依存を防ぐために使う
◆まとめ
全体を通して、「このActorは何を持っていてどんな関数があるか」を定義している。
あくまでヘッダーファイルは「設計図」となりますので処理は記述せず、ソースファイルに記述するようにしましょう。
◆YouTube
ゆうtuber・ゆうくん – YouTube
