#author("2017-01-12T09:05:07+00:00","default:nitta","nitta")
#author("2017-01-12T09:52:51+00:00","default:nitta","nitta")
[[UnrealEngine]]

*UnrealEngine/Plugins [#i3f8afee]

**インストールされているPluginを調べる。 [#ne1f10a1]
[Edit (編集)]メニューから[Plugins(プラグイン)]編集イターフェイスを開く。

メインの[Window]メニューから、プラグインエディタにアクセスできる。

コード付きのプラグインは、Sourceフォルダを持つ。

** Plugin Folders [#kcdc04db]
プラグインは、Unreal Engine のプラグイン用の検索パスに置くこと。

,Plugin type, Search Path
,Engine plugin, /UE4 root/Engine/Plugins/My Engine Plugin/
,Game plugin, /My Project/Plugins/My Game lugin/

基準となる Plugins フォルダの下に、サブディレクトリを作ってpluginをそこに置いても構わない。
pluginが見つからない限り、自動的に下位のサブディレクトリをスキャンする。
ただし、1つでもpluginを発見すると、それより下位のサブディレクトリはスキャンしない。

Unreal Engine は .upluginという拡張子のファイルを探すことで、個々のplugin を発見する。
これはテキストファイルで、基本情報を保持している。

***Code in Plugin [#j0d1084a]

Visual Studio や Xcode でプロジェクトを生成すると、
(*.Build.cs ファイルが存在する)Source フォルダを持つ plugin が追加され、
ソースコードを調べやすくなる。
このような plugin は、プロジェクトをコンパイルする際に、
Unreal Build Toolが自動的にコンパイルする。

pluginには何個もソースフォルダが存在して構わないが、普通は1個である。

plugin では、新しい UObject 型 (UCLASS, USTRUCT, etc) を、そのモジュールの下位フォルダで宣言することができる。

plugin のソースファイルは、他のC++のモジュールとほとんど同じである。
plugin で異なるのは、Public source file のヘッダである。
たいていの plugin では、 Public source folder にあるヘッダで public APIs をエクスポートする必要はない。したがって通常 Public source folder は空である。
例外は以下の通り。

- plugin に複数の C++ モジュールがある場合。Publicフォルダは複数のモジュールで共有できる。
- engine plugin ではなくgame plugin を作成していて、pluginモジュールを静的リンクしたい場合。
- public interface headers を plugin と共に配布したい場合。

** Content in Plugins [#b871b614]
Unreal Engine は バイナリだけではなく、コンテンツを含むpluginをサポートしている。
コンテンツを含む場合は、'CanContainContent' 設定を 'true' にすること。

まだ、実装中なので、動かないかも。

** Plugins in your Game Project [#t12d280b]
あなたのゲームプロジェクトの 'Plugins/' フォルダの下位にある plugin は、
game engine や editor が起動するときに発見されロードされる。

ソースフォルダや *.Build.cs ファイルを含むモジュールを plugin が含んでいる時は、
plugin のコードは C++ のプロジェクトファイルに自動的に加えられる。

ソースのサブフォルダを持たない plugin の場合は、プロジェクトジェネレータに無視され
C++プロジェクトのファイルとしては表示されない。しかし、バイナリが存在する限り、
起動時にロードされる。


** Engine Plugins [#oe3c6b4e]

Engine ディレクトリにある built-in plugins は、全てのゲームプロジェクトで利用できる。

ゲームモジュールそのものや、ゲームモジュールのplugin よりも前にロードされる。

Engine plugins は次の要件を満たす必要がある。
- 静的にリンクしてはならない。

** Plugin の配布 [#p057f9a8]
+ plugin の記述子ファイル (.uplugin) を編集し、名前、モジュール、バージョンなどを設定する。
+ Editor の Plugin Browser で対象の plugin を見付けたら 'Edit...' リンクをクリックして、pluginに関連したメタデータ (description, ドキュメントのリンクなど)を更新する。
+ 'Package...' リンクをクリックして、配布用フォルダへ plugin をパックする。

デフォルトでは、ソースコード、バイナリ、コンテンツだけが plugin でパッケージされる。
追加ファイルを含めたい場合は、Config/FilterPlugin.ini というファイルを作り、
追加パスを記述する。

 [FilterPlugin]
 /ThirdParty/...
 /MyOtherFolder/...

** Plugin Descriptor files [#z4618dc7]

plugin descriptor は、ファイルの拡張子が .uplugin である Json 形式のファイルである。
ファイル名の最初の部分は常にplugin の名前になる。
 {
    "FileVersion" :3,
    "FriendlyName" :"UObject Example Plugin",
    "Version" :1,
    "FriendlyVersion" :"1.0",
    "Description" :"An example of a plugin",
    "Modules" : [
                  {
		    "Name" :"UObjectPlugin",
                    "Type" :"Developer"
		  }
		]
 }
    
Module Descriptors
 {
   "Name" : "UObjectPlugin",
   "Type" : "Developer",
 }

Icon File を必要とする
,/Resources, Must, 128x128 PNG,
,/Icno128.png, Must, File,


** Pluginの例 [#d4b9ac83]
-BlankPlugin
-UObjectPlugin

+ サンプルプラグインを新規フォルダにコピーし、名前を変更する。
+ ゲームプロジェクトのディレクトリに 'Plugins/' フォルダを作成し、その下に自分のpluginをコピーする。
 GAME_PROJECT_FOLDER/Plugins/BlankPlugin
 GAME_PROJECT_FOLDER/Plugins/UObjectPlugin
+ C++ プロジェクトを Rebuild する。
+ Editor または Game を起動する。 まだpluginは無効である。
+ Window->Plugins で Plugin Editor を開き、plugin を有効にする。
+ Editor を再起動する。pluginは自動的にロードされる。
+ 確認する。Window->Developer Tools -> Module Viewer
+ 確認する。コードデバッガで、プラグインの開始コードにbreak point を設定する。
 FBlankPlugin::StartupModule()



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS