Language:
Page Info
Engine Version:
The translation of this page is out of date. Please see the English version for the latest version of the page.

アクタ

アクタ は、レベル内へ配置可能な任意のオブジェクトです。トランスレーション、回転、スケーリングなどの 3D 変形をサポートする汎用クラスです。アクタはゲームプレイ コード (C++ またはブループリント) を通して作成 (スポーン) 、破壊することができます。C++ において AActor は全てのアクタの基本クラスになります。

様々なタイプのアクタがあります。例えば、StaticMeshActor、CameraActor および、PlayerStartActor などがあります。

アクタにトランスフォーム (位置、回転、スケール) データは直接含まれません。アクタのルート コンポーネントのトランスフォーム データがある場合は、それが使われます。

アクタの作成

AActor クラスのインスタンスの新規作成を、スポーンする といいます。スポーンは、一般的な SpawnActor() 関数、あるいは特別にテンプレート化されたものを使って行います。

ゲームプレイ用に AActor クラスのインスタンスを作成する様々な方法については、アクタのスポーン をご覧ください。

コンポーネント

アクタ はある意味、コンポーネント と呼ばれる特別なタイプの オブジェクト を保持するコンテナとして考えられます。様々なタイプのコンポーネントを使って、 アクタの移動、レンダリング方法を制御することができます。アクタのその他の主要な機能は、 ゲーム中にネットワーク上でプロパティと関数コールを レプリケーション することです。

コンポーネントは作成されると、それに含まれるアクタと関連づけられます。

コンポーネント タイプをいくつか紹介します。

UActorComponent

これは基本のコンポーネントです。アクタの一部として含まれます。必要であれば、ティック することもできます。ActorComponents は特定のアクタに関連づいていますが、ワールドでは特定の位置に存在しているわけではありません。一般的には、AI やプレイヤー入力のインタープリッとなど、概念的な機能に使われます。

USceneComponent

このコンポーネントはトランスフォームをもつ ActorComponents です。トランスフォームとは、位置、回転、スケールで定義されるワールド内の位置のことです。SceneComponents は、階層的にお互いをアタッチすることができます。階層のルートである SceneComponent を元にアクタの位置、回転、スケールを行います。

UPrimitiveComponent

このコンポーネントは、何種類かのグラフィックス (メッシュ、パーティクル システムなど) をもつ SceneComponents です。ここで、物理とコリジョンにいろいろな設定ができます。

アクタは SceneComponents の階層をもつようにサポートされています。それぞれの アクタ には、どのコンポーネントが アクタ のルートの役割をするのかを指定する RootComponent プロパティがあります。アクタ 自体は変形しないので、位置、回転、スケールがありません。 位置、回転、スケールはありません。その代わり、アクタはコンポーネント、具体的には ルート コンポーネントの変形に依存します。このコンポーネントが SceneComponent の場合、 アクタに変形情報を与えます。これがないと、アクタは変形しません。その他のアタッチされたコンポーネントは、アタッチ先のコンポーネントに関連して変形します。

アクタと階層の例は、以下のようになります。

GoldPickup アクタ 階層
GoldPickupExampleActor.png
  • Root - SceneComponent:ワールドにアクタの基本位置を設定するための基本的なシーン コンポーネント

    • StaticMeshComponent:金鉱を表すメッシュ

      • ParticleSystemComponent:金鉱にアタッチされたキラキラ光るパーティクル エミッタ

      • AudioComponent:金鉱にアタッチされたループするメタルの鐘の音

      • BoxComponent:オーバーラップ イベントがゴールドを広いあげるトリガーとして使うコリジョン ボックス

ティック

ティックは、アンリアル エンジンでオブジェクトがどのようにアップデートされたかを表します。すべてのオブジェクトには、各フレームでティックする機能があり、必要な更新の計算やアクションを行うことができるようにします。

アクタ はすべて、TickActor() 関数を使ってデフォルトでティックされた状態にすることができます。この関数は、エンジンによってフレームごとに実行されます。

ActorComponent もデフォルトで更新をかけることができます。詳細は、更新 を参照してください。

ライフサイクル

アクタの作成方法およびゲームからの削除方法については、アクタのライフサイクル をご覧ください。

レプリケーション

レプリケーション は、ネットワーク経由のマルチプレイヤー ゲームを処理する際に、アクタをワールドに同期して維持するために使います。プロパティ値と関数コールは両方ともレプリケートが可能なので、 全てのクライアント上のゲームのステートを完全に制御することができます。

アクタを破壊する

ワールド オブジェクトがアクタ リファレンスのリストを保有しているので、アクタは一般的にガーベジ コレクションではありません。アクタは Destroy() を呼び出すことにより、明確に破壊することができます。アクタは破壊されると、レベルから削除され、「キルの保留状態」としてマークされます。 つまり、次のガーベジ コレクション上で整理されるまで、そこに残されることを意味します。