Skip to main content

Ablet NDMFハイブリッドプラグイン

Ablet NDMFハイブリッドプラグインは、AbletとNDMFのどちらかが存在する環境で動作するプラグインです。

NDMFはAblet NDMFハイブリッドプラグインを利用できます。

AbletはAblet NDMFハイブリッドプラグインを利用できます。

制約

実装が複雑になりがちです。 おそらく、NDMFとAbletの機能を適切に読み替えたり、どちらかのみに存在する機能を適切に条件コンパイルで切り分ける必要があります。

Prefer Ablet

Prefer AbletはAblet NDMFハイブリッドプラグインの挙動を制御します。 Ablet NDMFハイブリッドプラグインはAbletとNDMFのいずれかがあれば動作しますが、Ablet on NDMFやNDMF on Abletと組み合わせた時にどのように動作すれば良いかが問題になります。

オフにすると、Ablet NDMFハイブリッドプラグインはNDMFプラグインとして実行するようリクエストされます。 プラグインはNDMFの実行順で実行されます。

オンにすると、Ablet NDMFハイブリッドプラグインはAbletプラグインとして実行するようリクエストされます。 プラグインはAbletの実行順で実行されます。

TIPS

Prefer Ablet は実験的な設定です。

NDMFのある環境では、ほとんどの場合、 Prefer Ablet をオフにしてNDMFプラグインとして実行した方が問題が起きにくいです。

プラグイン制作者向け情報

Ablet NDMFハイブリッドプラグインを作る際、いくつかの考慮すべき点があります。

  • AbletとNDMFの両方のプラグインがコード上で有効になっている場合、AbletとNDMFのそれぞれのタイミングで処理が実行されます。 これで処理が2回実行されると問題があるプラグインは、処理が重複実行されないように制御を行う必要があります。
    TIPS

    AbletSymbols.PreferAblet 定数や PREFER_ABLET コンパイルフラグに依存するようにしておくことで、ユーザーがどちらを優先したいかを検出できます。

  • AbletとNDMFはプラグインを定義する方法がNDMFと異なります。 例えば、Abletプラグインとしての適用時とNDMFプラグインとしての適用時でプラグインの処理順が異なる場合があります。
  • NDMFまたはAbletのどちらかのみに存在する機能は注意深く利用してください。
    • Abletは例えばVRC Expression Parameters情報の扱いをサポートせず、NDMFプレビュー相当の機能もありません。
    • 同様に、NDMFは例えばビルド中にルートオブジェクトを丸ごと置き換えることができず、Runtimeアセンブリをサポートしません。