コンポーネント は、アクタに追加することができる機能の構成要素です。
コンポーネントをアクタに追加すると、アクタはコンポーネントが提供する機能を使用できます。次に例を示します。
- Spot Light コンポーネントを使用すると、アクターはスポットライトのように発光します。
- Rotating Movement コンポーネントを使用すると、アクターが回転します。
- Audio コンポーネントは、俳優にサウンドを再生する機能を提供します。
アクタとは異なり、コンポーネントはアクタにアタッチする必要があり、単独で存在することはできません。
アクタにコンポーネントを追加すると、レベルに配置するアクタ全体の構成要素を作り上げていることになります。たとえば、車 (アクタ) は車輪、ステアリング、車体、ライトなど (コンポーネント) で構成されています。同様に、プレイヤー キャラクターを表すアクタは、骨格メッシュ (キャラクターの視覚的表現)、キャラクターを追跡するカメラ、およびプレイヤーからの入力を受け取るコントローラーの個々のコンポーネントを持っている場合があります。
アクタを構成するさまざまなコンポーネントをまとめると、アクタの機能を指示する「ブループリント」スクリプト (または C ++ コード) を提供しなくても、アクタをレベルに配置できます。上記の例に沿って、車 (アクタ) は、ドライバー (ブループリントまたは C ++ コード) が何をすべきかを指示しなくても、ワールド (レベル) にオブジェクトとして存在できます。次に、ブループリントまたは C ++ コードを使用して、車の各コンポーネントに個別にアクセスできます (たとえば、アクセル ペダルのコンポーネントが押されている場合、ブループリント ロジックによって車の速度が上がる可能性があります)。
コンポーネントのインスタンス化
一般的にサブオブジェクトのデフォルトの挙動とは逆に、アクタ内でサブオブジェクトとして作成されたコンポーネントはインスタンス化されます。つまり、各アクタの特定クラスのインスタンスは、コンポーネントの独自の固有インスタンスを取得します。
上述の車の例で思い描くとわかりやすいでしょう。Car クラスは、車輪の表現にコンポーネントを使用するかもしれません。クラスのデフォルト プロパティにはサブオブジェクトとして 4 つの Wheel コンポーネントが作成され、"Wheels" 配列へ割り当てられます。新規の Car インスタンスが作成されると、Wheel コンポーネントの新しいインスタンスはその特定の Car 用に作成されます。これが該当しない場合、ワールドにある一台の Car が動くと、全ての Car の車輪が回転します。これは明らかに望まれる動作ではありません。デフォルトのコンポーネントのインスタンス化は、アクタへ固有のサブオブジェクトを迅速に追加するプロセスを簡素化します。
コンポーネントをインスタンス化しないと、全てのコンポーネントの変数は Instanced
プロパティ指定子 を使用して宣言する必要があります。
コンポーネントのタイプ
このセクションは、Unreal Engine で作業する場合にもっともよく使用するコンポーネント タイプのドキュメントへのリンクです。ただし、Unreal Engine で使用できるすべてのコンポーネント タイプの一覧ではありませんのでご注意ください。独自のコンポーネントを追加するプラグインやプロジェクト テンプレートもありますし、すべてのアクタに使用できるわけではないアクタもあります。
その他のコンポーネントについては、Unreal Engine API リファレンス の Component Visualizers セクションを参照することもできます。