web-dev-qa-db-ja.com

ネイティブC#イベントよりもUnityEventを選択する理由

つまり、UnityEventはネイティブC#イベントよりも低速であり、レシーバーへの強い参照を保存します。したがって、ネイティブC#イベントでUnityEventsを使用するために私が見つけることができる唯一の有効な理由は、エディターとの統合です。 見落としがある

16

私は何かを見落としているか?

いいえ、あなたは何も見落としていません。 UnityEventを使用する唯一の利点と理由は、エディターでイベントを使用できることです。これは、ドラッグアンドドロップする人、またはエディタープラグインを作成する人向けです。

UnityEventのもう1つの利点は、デリゲートの誤用やUnityオブジェクトでの匿名デリゲートの使用が原因でUnityオブジェクトが解放されないという問題を防ぐことです。それらを保持しているメインスクリプトが破棄されると、それらは解放されますが。これは、UnityEventが弱い参照で実装されているため、この問題が解消または最小化されるためです。これらの2つは、ネイティブC#イベントでUnityEventを使用する価値はまだあります。

Editorプラグインを作成していない場合は、パフォーマンスが高速でメモリ使用量が少ないため、常にネイティブイベントを使用し、UnityEventを介してデリゲートする必要があります。詳細については、 this および this の投稿を参照してください。

30
Programmer

UnityEventは主にUnity UIシステムで使用されます。これは、uguiがボタンのOnClickコールバックなどのuiシステムでのコールバック構成をシリアル化する必要があるためです。

シリアライゼーションは、ユニティゲームエンジンの最も重要な機能です。C#組み込みイベントシステムでは、シリアライゼーションを実行できません。

したがって、ユニティUIシステムで作業する場合は、UnityEventを使用する必要があります。コールバック関数の構成をシリアル化する場合は、UnityEventを使用する必要があります。

他の状況では、c#組み込みイベントを使用します。

0
liyonghelpme