イベント トラックの概要

シーケンサのイベント トラックを使用してイベントを発生させるときに使用できる機能について説明します。

Windows
MacOS
Linux

イベント トラック で、なんらかの形式のスクリプトによる機能を実行する場所をシネマティックの各ポイントに定義できます。 シネマティックで、プレイヤーが金庫を開いて収集できるアイテムを受け取りたい場合があります。 あるいはプレイヤーの周辺に何らかのパーティクル エフェクトをスポーンしたいこともあります。 どのような場合でも、イベント トラックは各フレームを繰り返すイベントのセクションや単一のキー イベントを発生させるために使用できます。 

このページでは利用可能な機能の一部、およびシーケンサでイベント トラックと連動するように関連付けられた基盤のシステムについて概要を説明します。 

イベントを追加する

シーケンス内に イベント トラック を追加するには、 [+ Track] ボタンをクリックして、 [Event Track] を選択します。 

AddingAnEventTrack.png

イベント トラックを追加した後、セクションまたは単一のキーフレームをイベントとして、シーケンスの指定フレームに追加できます。 

AddedKeyframeType.png

イベントを追加した後、 Director ブループリントを使用して、イベントに対する機能をスクリプト化できます。

イベント トラックの作成と使用について How-To とステップごとのガイドについては「シーケンサ経由でイベントを呼び出す」を参照してください。

Director ブループリント

Director ブループリントは、任意の Blueprint タイプです。指定のシーケンスでプレイバックし、イベントをトリガーする必要なバイト コードを生成するのをディレクションするために使用できるものです (次に示されているのは Level Sequence Director ブループリント)。 

クリックして拡大

Director ブループリントで、1 つまたは複数のターゲットに対して発生させるスクリプトによる機能を提供できます。 Director ブループリントを使用して、他のブループリントが実装し、呼び出されたときに実行する ブループリント インターフェース を呼び出すこともできます。

対象シーケンス タイプでイベントをサポートするために、イベントでそのディレクタと相互通信する方法を定義する必要があります。 これはシーケンス タイプごとに登録される、エディタ専用 Movie Scene Sequence Editor を通じて達成されます。 それぞれのシーケンス タイプで対応する独自の Director ブループリントを定義できます。 

例: 

  • Level Sequence Event - 独自の Level Sequence Director と生成されるクラスを作成します。 

  • Widget Animation Event - アニメーションを所有する Widget Blueprint を使用します。 さらに、対象のウィジェットに対してすべてのアニメーションは同じ Director (ウィジェット インスタンス自体) を使用します。 

  • Actor Sequence Event - raw インスタンス化コンポーネントとして、アクタ シーケンスが存在する場合、所有するブループリントまたはレベル ブループリントを使用します。

バージョン 4.21 において、Director ブループリントでは リグのコントロール がサポートされていません。

サブシーケンスが存在する場合、Director インスタンスは、その Director インスタンスの使用を試みるすべてのサブシーケンスに対して作成されます。 さらに、Director インスタンスはオンデマンドで (イベント トラックにより) 作成され、 コンテンツ ブラウザ でアクセスされるアセットではありません (ただし、将来のイテレーションで変わることがあります)。 

Director ブループリントは、 イベント エンドポイント が作成される、またはイベント トラックの定義されたキーまたはセクションからアクセスされると、自動的に開きます。 

イベント エンドポイント

イベント エンドポイント は関連する Director クラス ブループリントへのアクセスを許可し、イベント トラックのキーまたはリピータ セクションをダブルクリックしたときに自動的に作成されます。 キーまたはリピータ セクションで右クリックして、コンテキスト メニューの [Properties] オプションで新しいエンドポイントを作成できます。 

CreatingAnEndPoint.png

新規に作成されたエンドポイントは (インスタンスに対するオブジェクト バインディング タイプの) エンドポイントの認識できるデフォルト ピンの定義を試みますが、これは変更または削除されることがあります。 

EndpointOutPin.png

エンドポイントには 0 または 1 のピンがあります。 ピンが指定されていないとき、イベントに対して有効なオブジェクトが指定されているかどうかに関係なく、イベントが常にトリガーされます (これは イベント レシーバ がない マスター トラック に対するデフォルトです)。 単一のオブジェクトまたはインターフェース ピンが存在するとき、オブジェクトが適切なタイプである、またはインターフェースを実装する場合に、バインドされたオブジェクトごとに 1 回イベントがトリガーされます。 他のすべての関数シグネチャはシーケンサ イベントと互換性がなく、トリガーできません。 

Event プロパティ セクションには既存の互換機能にバインドする、または新規エンドポイントがターゲット クラスでブループリントを呼び出すことができる関数に自動で接続するオプションがあります。 

EndPointBindings.png

前に示すように、 [Disable HUD] または [Enable AI] を呼び出すようにバインドできる、 既存の エンドポイントがあります。さらに Quick Binding を、Anim Dynamics をスケルタル メッシュで再設定するように、ブループリントの呼び出し可能な関数に対して作成できます。 イベント エンドポイントを割り当てたとき、プロパティ メニューのイベントをダブルクリックまたは拡大鏡アイコンをクリックして、イベントの定義を直接参照できます。

エンドポイントとインターフェース

Director ブループリントでエンドポイントを定義すると、 ブループリント インターフェース を実装して、変化するブループリント、または レベル ブループリント とも通信できます。 次に示すようにイベントとエンドポイントが作成されます。 クラス設定 オプションでブループリント インターフェースも実装しました。 

Interface_01.PNG

サンプル関数に対してメッセージ呼び出しを実行するとき、インターフェースを実装するブループリント (次に示す Level Blueprint を含む) は関連するイベントを実行します。 

Interface_02.PNG

上のとおり、 Level Blueprint はインターフェースから呼び出しを受け取り、テキストを画面に表示する、 Print String を実行します。 

詳細は「ブループリント インターフェース」のドキュメントを参照してください。

イベント ターゲット

イベントによりトリガーされるターゲットを定義するために複数のオプションがあります。 これらの一部は従来との互換性を保つためにサポートされています。 単一のイベントに複数のターゲットが指定されているとき、イベントはそれぞれに対して、つまり複数回トリガーされます。

それぞれに対して利用可能なターゲット タイプと追加情報については次の各セクションを参照してください。 

イベント レシーバ

イベント レシーバ では、トラックでイベントをトリガーする対象のオブジェクト バインディングのリストを定義できます。 空のとき、イベントはデフォルトのイベント コンテキストでプレイバック環境 (レベル ブループリントやウィジェットなど) に対してトリガーします。 

イベント レシーバ はイベント トラックのプロパティ メニューから、 トラック ウィンドウで イベント トラック を右クリックして割り当てできます。 

EventReciever_RightClick.png

[Event Receivers (イベント レシーバ)] の隣にある [+] 記号をクリックすると、シーケンス階層 (親または子でも) からオブジェクト バインディングを指定できます。 

AssignedEventReciever.png

上のとおり、オブジェクト バインディングとして [ThirdPersonCharacter] を選択します。 イベント レシーバを割り当てているので、イベント エンドポイントを追加するときに、ターゲット オブジェクトがどのようなものかわかり、したがってそのオブジェクトにアクセスまたは実行できます。 

ChangeTargetType-1.png

上のとおり、[Target] ピン タイプを [ThirdPersonCharacter] オブジェクト リファレンスに変更します。 このイベントが実行されるとき、シーケンサは内部でキャストを実行し、オブジェクト タイプが一致することを確認し、失敗した場合に呼び出されないようにします。 一致がある場合、プロパティ、コンポーネントにアクセスし、またはオブジェクトの関数やスクリプトを呼び出すことができます。 

イベント レシーバはトラック内のすべてのイベント セクションに影響を与え、バインディング オーバーライドを受け取ります。

オブジェクト バインディング

イベント トラックをシーケンスに追加するほかに、イベント トラックをシーケンス階層の既存のオブジェクトに追加できます。 イベント エンドポイントのターゲット オブジェクトが、イベント トラックに追加されるオブジェクトにバインドされる場合、これにより、 オブジェクト バインディング がイベント トラックに対して作成されます。 

オブジェクト バインディングがイベント エンドポイントにバインドされるのは、イベント レシーバがトラックに割り当てられていない場合だけです。

例えば、次に示すのは Character ブループリントをシーケンスに追加したものです。 次にスケルタル メッシュをシーケンスに追加し、スケルタル メッシュに割り当てられている Anim ブループリント インスタンスが続きます。 Anim ブループリント トラックでは、イベント トラックを追加します。 

ObjectBinding_01-1.PNG

イベントのキーフレームを追加し、イベント エンドポイントを割り当てるとき、 [Quick Bindings] セクションで、Anim ブループリントに関連する関数呼び出しにアクセスします。 

ObjectBinding_02-1.PNG

Quick Binding を使用すると、関連する Director ブループリントが自動的にセットアップされます。 次では、 [Reset Dynamics] 関数呼び出しにバインドします。 

ObjectBinding_03-1.PNG

追加のイベント レシーバ

Level Sequence Actor[Details (詳細)] パネルで [Additional Event Receivers] を割り当てることができます。 

AdditionalEventReceivers.PNG

ワールドからアクタのユーザー定義セットを追加することによって、イベント コンテキストを Level Script Actor に追加で指定することができます。 前の画像で、レベル内にある ThirdPersonCharacter を割り当てます。 次に示すようにイベント エンドポイントを定義するとき、イベントやターゲットを呼び出すとき、コンテキストが得られます。これはキャラクタに関連付けられたメッシュに対して物理シミュレーションの実行とコリジョン プロファイルの変更を指示します。 

SimulateExample.png

イベント セクション タイプ

イベント トラックは個別のキーが付いたイベントとセクションをサポートします。

  • トリガー セクション - それぞれ独自のエンドポイントを持つ (または同じものを共有する) ことができるイベントのチャンネルを定義します。 イベントは詳しく評価されたときにトリガーされます

  • リピータ セクション - 評価するたびにトリガーされる単一のイベント (およびエンドポイント) を定義します。

イベント トラックの [Section] ボタンをクリックして、必要なタイプを選択することで、イベント セクションを追加できます。 

Section_01_update.png

タイムラインで (すべてのキーがある) セクションを簡単に移動するとき、複数のキー イベントをグループにまとめるためにトリガー セクションが便利です。次に 2 つのキーフレームがあるトリガー セクションを示します。 トリガー セクションを選択し、タイムラインに従って、希望する位置に移動できます。各イベント間のフレームの量を移動したときに変化がないように維持します。 

TriggerSection_01.PNG

リピータ セクションはセクションの間の各フレームで割り当てられたイベントを発生させ、エンドポイントに伝えます。 

RepeaterSection.PNG

前に示すように、フレーム 30 からフレーム 75 まで 「Print String Event」 というリピータ セクションがあります。 このイベントは指定フレームの範囲でフレームごとに画面にテキストを表示します。 リピータ セクションが便利なのは、シーケンスの指定期間にフレームごとにイベントは発生させる必要がある場合です。 

よくある質問 (FAQ)

シーケンサでイベント トラックを処理するときに発生する可能性がある問題について次に示します。 

  • レベル ブループリントでイベントをどのようにトリガーするのでしょうか?

    • レベル ブループリントでレベル シーケンスとブループリント インターフェースにマスター トラックを設定して、ピン タイプをブループリント インターフェースに変えて、エンドポイントからブループリント インターフェース関数を呼び出します。

  • 複数のオブジェクトがあるバインディングに対してどのようにイベントをトリガーするのでしょうか?

    • イベント エンドポイントは、ピン タイプにキャストできるバインドされたオブジェクトのそれぞれに対して呼び出されます。

  • ピン タイプはイベント エンドポイントで何を表しますか?

    • オブジェクト バインディングにあるとき、オブジェクトはピン タイプにキャストされ、オブジェクトが一致した場合にのみ呼び出されます。 マスター トラックにあるとき、イベントはレベル ブループリントがピン タイプに一致する場合に呼び出されます。

  • UMG でどのようにイベントをトリガーしますか?

    • レベル シーケンスとまったく同じ方法です。ウィジェット自体がマスター イベント トラックのコンテキストです。 バインドされたウィジェットはオブジェクト バインディングでイベント トラックのコンテキストです。

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信