GameObject と UObject およびアクタを比較する
Unity では、GameObject はプログラム可能ゲーム内オブジェクトです。 GameObject 自体の機能はあまりなく、ライトやメッシュなどのコンポーネントを格納するコンテナとして機能し、特定の機能を提供します。 すべての GameObject には、トランスフォーム コンポーネントが付加しており、ワールド内での位置や向きを表します。
Unreal Engine (UE) では、UObjects はゲーム ワールドでのプログラム可能オブジェクトです。 UObject クラスは、UE のほとんどのクラスに共通する基本クラスとして機能します。 このアプローチは、Unreal Engine リフレクション システムをサポートしており、自動ガベージ コレクションやその他の利点を提供します。
アクタは、UObject のサブクラスで、Unity の GameObject に近い概念です。 アクタは UE の コンポーネント システムとトランスフォーム (USceneComponent) をサポートしており、ワールド内に配置することができます。 Unity と比べた場合の主な違いは、アクタの機能をコンポーネントに依存するだけでなく、直接拡張できる点です。
オブジェクトの実装で UObject のサブクラスの追加機能が不要な場合に、UObject を直接拡張して、軽い実装にすることができます。 UObject の詳細は、「オブジェクト」を参照してください。
コンポーネント システムを比較する
Unity と同様に、UE にはゲーム オブジェクトに再利用可能な機能を付加するコンポーネント システムがあります。 コンポーネントは、自分でゼロから作成することも、UE に付属する多数のコンポーネントを拡張して作成することもできます。 これを実行する前に、以下の主要なコンポーネント型を理解しておくとよいでしょう。
アクタ コンポーネント - アクタに付加する基本的なコンポーネント型。 アクタ コンポーネントにはトランスフォームがないため、ワールドでの物理的な位置がありません。 インベントリや属性管理などの抽象的な動作に役立ちます。
シーン コンポーネント - ワールドでの位置がある、トランスフォームを追加するアクタ コンポーネント型。 シーン コンポーネントには視覚的な表現がないため、物理的な力、カメラ、オーディオなど、非表示の位置ベースの動作に適しています。
プリミティブ コンポーネント - 視覚的および物理的表現を追加するシーン コンポーネント型。 視覚要素のレンダリングやコリジョン ボリュームに適しています。
Unity では、親子関係を使用して複雑な GameObject 作成できます。 例えば、親オブジェクトには、それぞれ独自のメッシュ、コライダ、または動作のある複数の子オブジェクトを配置できます。
UE では、パフォーマンスやメモリのコストを抑えるために、子アクタの代わりにコンポーネントを使用して、同様の階層構造のあるアクタを構築できます。
UE のコンポーネント システムの詳細は、「コンポーネント」を参照してください。
Update() と Tick() を比較する
Unity では、コンポーネント アップデートは、主に MonoBehaviour 内の Update() と FixedUpdate() によって行われます。
UE では、アクタは Tick() を使用し (デフォルトで有効)、コンポーネントはオプションで TickComponent() を使用します (デフォルトで無効)。
デフォルトでは、ティックは 1 フレームあたり 1 回実行されます。 TG_DuringPhysics などのティック グループを割り当てることで、別のティック間隔を指定できます。 別の指定ティック関数が完了するまでティックを実行しないように、ティックの依存関係を指定することもできます。
詳細は、以下のリソースを参照してください。
ゲームプレイ フレームワーク
Unreal Engine のゲームプレイ フレームワークは、アクタとコンポーネントを含むクラスの集まりです。ゲームプレイ体験を構築するためのモジュール式基盤を提供します。
Unity でのゲームプレイの実装と、UE のゲームプレイ フレームワークを比べてみると、類似点よりも相違点の方が多いです。 そのため、ゲームプレイ フレームワーク セクションを見直して、このドキュメントで説明されている概念がフレームワークにどのように適合するかについて詳しく学ぶことをお勧めします。 また、以下のセクションでは、重要なフレームワーク クラスを高レベルで説明しています。
重要な UObject サブクラス
Level (レベル) - ゲームのレベルを構成するゲーム オブジェクトのセットが含まれます。 レベルは、Unity のシーンと似ています。
Data Asset (データ アセット) - ゲームのデータを保存するアセットの定義に使用します。 データ アセットは、Unity の ScriptableObjects と似ています。
重要なアクタ サブクラス
Pawn (ポーン) - ワールド内の「エージェント」として機能します。 コントローラーは、ポーンを所持して、その制御を行うことができます。
Character (キャラクター) - 人型キャラクターを表し、基本的な移動や衝突機能を提供するポーンの一種。
Controller (コントローラー) - ポーンを所有した後に指示します。
PlayerController (プレイヤーコントローラー) - ローカルの人間プレイヤーがポーンを操作できるように使用します。
AIController (AI コントローラー) - 人工知能 (AI) でポーンを操作するために使用します。
Game Mode (ゲーム モード) - ゲームを定義し、設定するマネージャー アクタ。
Game State (ゲーム ステート) - ゲームの状態情報が含まれます。
Player State (プレイヤー ステート) - プレイヤーの状態情報が含まれます。 ゲーム ステートは、すべてのプレイヤー ステートを配列内で追跡します。