#UE4 の #Spine2D プラグインを Blueprint プロジェクトで使う方法。
C++ コードを含む UE4 プラグインはそのままでは Blueprint プロジェクトでは使用できない。エディタでは動くんだけど、パッケージをビルドして実行すると下の画像のようなエラーがでて終了してしまう。
Unreal Automation Tool の BuildPlugin コマンドを使うとプラグインをコンパイルしてパッケージングすることができるらしいんだけど、これを試しても上のようなエラーがでる。cf. [Building Binary Plugins in Unreal Engine 4 | Mercuna](https://mercuna.com/building-binary-plugins-in-unreal-engine-4/) |
で、いろいろ試した結果、UE4 のソースコードの Plugins のディレクトリに Spine のプラグインのソースを入れて、エンジンごとビルドすればいいことが分かった。
これでうまくいくかと思ったけど、実際にやってみると下のようなエラーが山ほど出た:
SpineBoneDriverComponent.h(43) : LogCompile: Error: An explicit Category specifier is required for any property exposed to the editor or Blueprints in an Engine module.
プロパティにはカテゴリを明示しなければいけないらしいので、エラーが出ていた箇所に対して下のように Category を追加してみた。
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category=Spine)
これでエラーはなくなった。コンパイルすると下のような警告がたくさん出るけど、とりあえずこれで動いた。
In file included from /home/toru/src/UnrealEngine/Engine/Plugins/2D/SpinePlugin/Intermediate/Build/Linux/B4D820EA/UE4Editor/Development/SpinePlugin/Module.SpinePlugin.cpp:2:
In file included from /home/toru/src/UnrealEngine/Engine/Plugins/2D/SpinePlugin/Source/SpinePlugin/Private/SpineAtlasAsset.cpp:30:
In file included from ../Plugins/2D/SpinePlugin/Source/SpinePlugin/Private/SpinePluginPrivatePCH.h:31:
In file included from ../Plugins/2D/SpinePlugin/Source/SpinePlugin/Public/SpineSkeletonDataAsset.h:32:
/home/toru/src/UnrealEngine/Engine/Source/Runtime/Engine/Public/Engine.h:10:1: warning: Monolithic headers should not be used by this module. Please change it to explicitly include the headers it needs. [-W#pragma-messages]
MONOLITHIC_HEADER_BOILERPLATE()
^
/home/toru/src/UnrealEngine/Engine/Source/Runtime/Core/Public/Misc/MonolithicHeaderBoilerplate.h:6:42: note: expanded from macro 'MONOLITHIC_HEADER_BOILERPLATE'
#define MONOLITHIC_HEADER_BOILERPLATE() COMPILE_WARNING("Monolithic headers should not be used by this module. Please change it to explicitly include the headers it needs.")
^
/home/toru/src/UnrealEngine/Engine/Source/Runtime/Core/Public/HAL/Platform.h:767:29: note: expanded from macro 'COMPILE_WARNING'
#define COMPILE_WARNING(x) GCC_DIAGNOSTIC_HELPER(GCC warning x)
^
/home/toru/src/UnrealEngine/Engine/Source/Runtime/Core/Public/HAL/Platform.h:766:35: note: expanded from macro 'GCC_DIAGNOSTIC_HELPER'
#define GCC_DIAGNOSTIC_HELPER(x) _Pragma(#x)
^
<scratch space>:7:6: note: expanded from here
GCC warning "Monolithic headers should not be used by this module. Please change it to explicitly include the headers it needs."
^
これでめでたく Blueprint プロジェクトで Spine を使ってゲームをビルドすることができた。