お世話になっております。1つ実装方法についてご相談させてください。
現在外部のライブラリをUE4プラグインとして利用しているのですが UEのアップデートにより修正が必要なことが多くその問題が解決するまでそれ以外の部分の動作確認ができなくなる為困っております。
したいこととして該当するプラグインのあり・なしどちらでも エディタを起動して動作確認できる環境を作りたいと思っております。
1例としてライブラリでは次の方法で対応することができました。
- プロジェクトの *.Build.cs に「PublicDepencencyModuleNames.Add(“プラグイン名”); PublicDefinitions.Add(“USE_XXX”) 」を定義。プラグインを利用しないときは この2行をコメントアウトする
- プラグインのコードを参照しているC++コード(includeや 関数呼び出しなど)を #ifdef USE_XXX ~ #endifで囲む
ただこれはC++でシンプルにプラグインを利用している場合のみ対応可能で以下の状況では対応方法がわかりませんでした。
-
USE_XXXのなかに UCLASS, UFUNCTION, UPROPERTY定義があると コンパイルエラーとなる
「error : UCLASS inside this preprocessor block will be skipped」
参考 UProperty wrapped by Marco(#if) doesn't work - Blueprint - Epic Developer Community Forums
-
プラグインで用意されたBlueprintで参照できる要素を利用すると プラグインを導入していないときは存在しないので当然エラーとなる
(該当部分を削除するのは戻し方がわからなくなるため避けたいです)
最初の対応も適切かどうかまようところがあるため、よい方法がありましたらアドバイスいただけますと大変助かります。よろしくお願いします。