この記事は ラクスパートナーズ Advent Calendar 2025 の15日目の記事です。
はじめに
これは私がUnreal Engineを勉強するにあたって、「最初に知っておけば良かった」と思ったことをまとめたものです。
プログラミング経験があり、オブジェクト指向についてもなんとなく理解している人は、UEを触る前にこの記事の内容を押さえておくと、その後の学習がスムーズになるかもしれません。
これから勉強する人の役に立てば幸いです。
対象読者
- JavaやPythonなど、C系以外の言語でプログラミング経験がある
- オブジェクト指向についてなんとなく理解している
このような方を想定しています。
Unreal Engineの世界はクラスでできている
クラス階層を俯瞰する
まずは以下のクラス継承図を見てください。
UObject(すべての祖先)
│
├── AActor(ワールドに配置できるもの)
│ ├── APawn(プレイヤーやAIが操作できるもの)
│ │ └── ACharacter(人型キャラクター)
│ ├── AController(Pawnを操作する側)
│ │ ├── APlayerController
│ │ └── AAIController
│ ├── AGameModeBase(ゲームルールを管理)
│ └── その他のアクタ(ライト、カメラ、トリガーなど)
│
└── UActorComponent(アクタに付ける部品)
└── USceneComponent(位置情報を持つ部品)
└── UPrimitiveComponent(描画・当たり判定を持つ部品)
これらはUnreal Engineに登場するクラスの一部です。実際にはもっと多くのクラスがありますが、ここでは主要なものだけをピックアップしました。
命名規則について
クラス名の先頭にあるUやAはプレフィックスです。Aは AActor を継承したクラス、Uは AActor 以外の UObject を継承したクラスを表します。
アクタとコンポーネント
UEのクラスは大きく アクタ(Actor) と コンポーネント(Component) に分かれます。
アクタは、レベル(ゲームのマップだと思ってください)に配置できるオブジェクトの基底クラスです。
- Pawn:プレイヤーやAIが操作できるもの
- Character:Pawnを継承した人型キャラクター向けのクラス
- Controller:Pawnを操作するロジックを担当
- GameMode:ゲームのルールを管理
ライトやカメラもアクタです。一方、ControllerやGameModeもアクタですが、これらは目に見える形でレベルに配置されることはありません。
コンポーネントは、アクタに付与できる部品です。
アクタ ─┬─ StaticMeshComponent(3Dモデルの見た目)
├─ CapsuleComponent(当たり判定)
└─ AudioComponent(サウンド再生)
コンポーネントもクラスなので、「アクタにコンポーネントを付与する」とは、アクタのインスタンスがコンポーネントのインスタンスを保持する(コンポジション)ということです。
C++では、UPROPERTYマクロ付きのメンバ変数としてコンポーネントのポインタを宣言し、コンストラクタでCreateDefaultSubobjectを使ってインスタンスを生成します。
// MyActor.h
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
public:
AMyActor();
// コンポーネントをメンバ変数として宣言
UPROPERTY(VisibleAnywhere)
UStaticMeshComponent* MeshComponent;
UPROPERTY(VisibleAnywhere)
UAudioComponent* AudioComponent;
};
// MyActor.cpp
AMyActor::AMyActor()
{
// コンストラクタでコンポーネントを生成して紐づける
MeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MeshComponent"));
RootComponent = MeshComponent;
AudioComponent = CreateDefaultSubobject<UAudioComponent>(TEXT("AudioComponent"));
AudioComponent->SetupAttachment(RootComponent);
}
このように、オブジェクト指向の観点からは「アクタがコンポーネントをメンバとして持つ」というシンプルな構造です。
エディタ画面との対応
ここまでの説明が、実際のUnreal Engineエディタでどのように表現されるか見てみましょう。
| 番号 | 名称 | 説明 |
|---|---|---|
| ① | ビューポート | クラスをインスタンス化したオブジェクトが視覚的に配置される空間 |
| ② | アウトライナー | レベル内のオブジェクト一覧。「Type」列がクラス名を表す |
| ③ | アクタ | ビューポートに表示されている BP_ThirdPersonCharacter0 というアクタのインスタンス |
| ④ | コンポーネント | アウトライナーから特定のアクタを選択するとDetailsパネルにコンポーネントが表示されます |
アウトライナーに表示されるものは、レベル自体を除き、すべてクラスをもとにしたインスタンス(オブジェクト)です。
まとめ
Unreal Engineの初心者向け解説の多くは非プログラマー向けに書かれており、アクタやコンポーネントを抽象的な概念として説明しています。
しかし、オブジェクト指向を理解していれば「結局はすべてクラスとそのインスタンスなのだ」と捉えることができます。
私自身、最初は「UE独自のまったく新しい概念」だと思い込んでしまい、なかなか深く理解できませんでした。同じような経験をしている方の参考になれば幸いです。
より深く理解したい方は、以下のキーワードも調べてみてください。
- コンポジション:オブジェクトが他のオブジェクトを保持する設計
- コンポーネント指向:機能を部品として分離する設計思想
- Entity Component System(ECS):ゲームエンジンでよく使われるアーキテクチャパターン
宣伝
わたくし、ゲーム制作系VTuberとして活動しています。
UnrealEngineでのゲーム制作風景や進捗報告動画、他にもいろいろやっているのでもしよかったら見に来てください。

