お世話になっております。
シーケンサーのSpawnable Actorにおけるライフタイム制御について質問させてください。
現在、シーケンサー上で使用するSpawnable Actorと、そのワークフローの実装を進めています。
シーケンサー上でのActorのライフタイム制御は通常Spawnable設定時に利用できるSpawnedトラックで行うものと認識しています。
一方で、Binding Lifetimeを操作した場合にも、見た目としては似たような動作をすることを確認しました。
Blueprintデバッガなどで確認する限りでは、Binding Lifetimeの範囲外ではActor が適切に消えているように見えます。
ただし、ドキュメントなどを確認した限りでは、Binding Lifetimeはその名のとおり、Actorをシーケンサー上でBindingする期間を指定するための機能のように見受けられ、
Actorのライフタイム制御そのものに関する説明は見当たりませんでした。
Binding Lifetimeを使ってSpawnable Actorのライフタイムを制御することに問題がないか、以下の点についてご教示いただけますでしょうか。
- Binding Lifetime の範囲外では、Actor が適切に消えることが保証されるのか(添付画像の赤枠部分です)
- Spawnedトラックによる制御と比べて、パフォーマンス上の余計なオーバーヘッドがあるのか
- Spawnedトラックによるライフタイム制御との違いや注意点があるのか
確認用として、SpawnedトラックとBinding Lifetimeを使ってSpawnable Actor を制御したサンプルを添付いたします。
以上になります。よろしくお願いいたします。
[Attachment Removed]
再現手順
質問内容の確認用として、SpawnedトラックとBinding Lifetimeを使ってSpawnable Actor を制御したサンプルを添付いたします。
[Attachment Removed]
投稿時に添付したZipファイルがちゃんと添付されているか分からなかったので
念のため再度添付させていただきます。
[Attachment Removed]
お世話になっております。
ご質問ありがとうございます。
■Binding Lifetime の範囲外では、Actor が適切に消えることが保証されるのか(添付画像の赤枠部分です)
技術的には保証されます。 CL32218187 において、BidingLifetimeSectionがSpawnableアクタの生成と破棄を行い、SpawnableタイプとPossessableタイプのライフタイムを統一的な方法で管理できるようになりました。
■Spawnedトラックによる制御と比べて、パフォーマンス上の余計なオーバーヘッドがあるのか
実用上のパフォーマンス差はほぼ無視できるレベルであり、同等と申し上げて差し支えありません。
■Spawnedトラックによるライフタイム制御との違いや注意点があるのか
Spawnトラック、Binding Lifetime トラックのどちらも同じ手法(SpawnableBinding)を通じてアクタの生成/破棄を行いますので、ランタイムで実行されるコードは同等といえます。
ただし、エディタ上では少し違いがあり、SpawnトラックはBoolベースであるため、アクタを途中で消したくなった場合(一度消して、あとでまた生成する場合)、シンプルにキーを打つだけで実現できますが、Binding Lifetimeでは(セクションの存続期間が「Spawn中」という扱いのため)セクションを分割しなければなりません。タイミングの変更時もセクション境界をドラッグして変更することになるため、Spawnトラックのキー編集と比べれば、ややUXに難ありといえます。
ただし、「アクタを途中で(Destroyという形で)消して、またSpawnさせる」という用途がなければ、実務上の問題はないかもしれません。
以上、よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
丁寧にご回答いただき、誠にありがとうございました。 おかげさまで不明点がすべて解消いたしましたので、本件につきましてはクローズしていただいて差し支えございません。
迅速かつ真摯なご対応に感謝申し上げます。また何かございましたら、その際はよろしくお願いいたします。
[Attachment Removed]
回答のご確認ありがとうございます。
それでは本件は対応済みとしてCloseさせていただきます。
また何かご不明点が出てまいりましたら、遠慮なくEPSでお問い合わせください。
以上、よろしくお願いいたします。
[Attachment Removed]