C++ プログラマーの場合
ブループリント スクリプトは Unreal Engine だけがあれば使用できます。 必要な機能はすべて組み込まれています。
C++ でコードを記述する場合、Windows には Visual Studio をダウンロードし、macOS には Xcode をインストール します。Unreal Engine で新規の C++ プロジェクトを初めて作成する場合 (または既存のプロジェクトに C++ コードを追加する場合)、Unreal Engine はユーザーに代わって自動的に Visual Studio プロジェクト ファイルを作成します。
Unreal Engine プロジェクトから Visual Studio にアクセスする方法は次の 2 つです。
-
コンテンツブラウザ で C++ クラスを ダブルクリック し、Visual Studio で開きます。
-
メイン メニューから [Tools (ツール)] > [Open Visual Studio (Visual Studio を開く)] を選択します。このオプションは、プロジェクトに C++ クラスが 1 つ以上含まれる場合にのみ表示されます。
Unreal Engine では異なる重要な点が 1 つあります。Visual Studio プロジェクト ファイルはときどき手動でリフレッシュする必要があります (新バージョンの Unreal Engine をダウンロードした後や、ディスク上のソース ファイルの場所を手動で変更したときなど)。 これには次の 2 つの方法があります。
-
Unreal Engine のメイン メニューから [Tools] > [Refresh Visual Studio Project (Visual Studio プロジェクトのリフレッシュ)] を選択します。
-
プロジェクトのディレクトリで .uproject ファイルを 右クリック し、[Generate Visual Studio project files (Visual Studio プロジェクト ファイルの生成)] を選択します。
イベント関数 (Start や Update など) を記述する
MonoBehaviors の使用経験があれば、Start
、Update
、OnDestroy
などのメソッドには慣れているでしょう。以下に、Unity での動作と、Unreal Engine のアクタやコンポーネントでこれに相当する動作との比較を挙げます。
Unity ではこのようなシンプルなコンポーネントになるでしょう。
public class MyComponent : MonoBehaviour
{
void Start() {}
void OnDestroy() {}
void Update() {}
}
Unreal Engine では新規のコンポーネント タイプをコーディングするだけでなく、アクタ自体に対してコードを記述できます。 このやり方が実際によく使われており、便利です。
Unreal Engine のアクタには、Unity の Start
、OnDestroy
、Update
関数に似たメソッドがあります。それらを以下に挙げます。
C++
UCLASS()
class AMyActor : public AActor
{
GENERATED_BODY()
// Called at start of game.
void BeginPlay();
// Called when destroyed.
void EndPlay(const EEndPlayReason::Type EndPlayReason);
// Called every frame to update this actor.
void Tick(float DeltaSeconds);
};
ブループリント

Unreal Engine のコンポーネントにはさまざまな関数が含まれます。 以下に基本的な例を挙げます。
C++
UCLASS()
class UMyComponent : public UActorComponent
{
GENERATED_BODY()
// Called after the owning Actor was created
void InitializeComponent();
// Called when the component or the owning Actor is being destroyed
void UninitializeComponent();
// Component version of Tick
void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction);
};
ブループリント

Unreal Engine ではメソッドの親クラスのバージョンを呼び出す必要があります。
たとえば Unity の C# では base.Update()
ですが、Unreal Engine の C++ では Super::TickComponent()
を使います。
void UMyComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
{
// Custom tick stuff here
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
}
C++ ではプレフィックス A
を使うクラスとプレフィックス U
を使うクラスがあります。A
はアクタのサブクラスを表し、U
は オブジェクト のサブクラスを表します。他にも一般的なプレフィックスとして F
があり、プレーンなデータ構造と UObject 以外のクラスの多くに使われています。