Effekseerでエフェクトを作成してUnityで再生する

#はじめに

[Effekseer](http://effekseer.github.io/jp/)とは、フリーかつオープンソースで開発されているエフェクトディタです。今回はこのEffekseerでエフェクトを作成してUnityで再生する方法を紹介したいと思います。

# エフェクト制作の手順

## 1.Effekseerをダウンロードし起動する

[公式サイト](http://effekseer.github.io/jp/download.html)よりエディタ本体をダウンロードし解答します。  Toolディレクトリ以下に本体のexeファイルが、Sample以下にサンプルのエフェクトプロジェクトが同梱されています。

## 2.エディタが起動したらまずプロジェクトを保存する

[ファイル] -> [名前をつけて保存]　からまずエフェクトのプロジェクトファイルを保存します。 

![hozon.png](https://qiita-image-store.s3.amazonaws.com/0/47146/a8eee378-a40c-1042-2f50-83734aae3f9b.png)
(適当にtest_effect1という名前で保存)

## 3.作成したプロジェクトファイル(efkproj)の場所にTextureというディレクトリを作成し、利用するテクスチャ画像を配置する
![hozon2.png](https://qiita-image-store.s3.amazonaws.com/0/47146/80f1bc75-e947-803a-76ae-4ac6f9d3185a.png)
efkprojの存在する場所にTextureというディレクトリを作成し、その中にこのエフェクトプロジェクトで利用するテクスチャ画像を保存します。


**このディレクトリ構成（efkprojより下のディレクトリにテクスチャを配置）にしないとUnityで再生した際にテクスチャのロードに失敗します。**地味に罠なので注意して下さい。

## 3.Effekseerエディタでエフェクトを作成する

2.で保存したテクスチャを利用しエフェクトをエディタ上で作成します。

![e1.png](https://qiita-image-store.s3.amazonaws.com/0/47146/c82b6c7f-e415-24d9-4ac5-d752545837d3.png)
（とりあえず魔法陣を回転させるエフェクトを作成）

## 4.作成したエフェクトを保存する

[ファイル] -> [出力] -> [標準形式]　を選択し、efkファイルとしてエフェクトを書き出します。
この書きだしたefkファイルをUnityに読み込ませます。

![e2.png](https://qiita-image-store.s3.amazonaws.com/0/47146/d3b1fcdf-0dfa-864c-5f30-e9621ba25f8e.png)

# Unityでエフェクト再生する

##1.Unityプラグインを導入する

[Effekseer For Unity](http://effekseer.github.io/jp/download.html)を公式サイトよりダウンロードし、同梱されている`Effekseer.unitypackage`をUnityプロジェクトにインポートします。
![u1.png](https://qiita-image-store.s3.amazonaws.com/0/47146/aece5879-31dc-cc37-259d-462e44b27f3b.png)

##2. Resouces以下にEffekseer用のディレクトリを作成する

* Resouces/Effekseer
* Resouces/Effekseer/Texture
* Resouces/Effekseer/Sound

これらのディレクトリをProjectViewに作成します。
![project.png](https://qiita-image-store.s3.amazonaws.com/0/47146/e517a708-1c10-18dc-0ccc-3de46b70f2bb.png)

##3. efkファイルとテクスチャを配置する

`Resouces/Effekseer`以下に作成したefkファイルを、`Resouces/Effekseer/Texture`以下にテクスチャをそれぞれ配置します。

![u2.png](https://qiita-image-store.s3.amazonaws.com/0/47146/e909e35d-d4b1-8b61-41c0-f29312841df7.png)

**この時、efkファイルの拡張子が自動的にbytes形式に変換されます。**変換されない場合はReimportまたはRefreshを実行して下さい。

![k2.png](https://qiita-image-store.s3.amazonaws.com/0/47146/16bcad08-8945-a7a7-b617-c5d7de99b482.png)

##4.GameObjectにEffekseerEmitterコンポーネントを貼り付ける

エフェクトを管理させるGameObjectに`EffekseerEmitter`コンポーネントを貼り付けます。 
また、`EffectName`の項目に再生したいエフェクトの名前（今回はtest_effect1)を指定します。

![u3.png](https://qiita-image-store.s3.amazonaws.com/0/47146/5e4de23e-6de2-508a-11bd-f71975d93a73.png)
GameObjectの生成と同時に再生したい場合は`Play On Start`にチェックをしておきます。

##5.再生してエフェクトが生成されることを確認する
ディレクトリ構成やファイル名が正しく設定されていれば、ゲームを実行すればエフェクトが再生できるはずです。

![u4.png](https://qiita-image-store.s3.amazonaws.com/0/47146/57da3df9-a126-b25a-2189-f814fc29e705.png)

もしテクスチャが正しく読み込めていない場合、**efkproj作成時のディレクトリ構成**が間違っている可能性があります。（Assets/Resouces/Effekseer以下の構成が正しくても、efkproj作成時のディレクトリ構成がおかしいとテクスチャロードに失敗します）

##6. Transformを調整してエフェクトのサイズや場所を変更する

再生されるエフェクトの座標・姿勢・サイズは`EffekseerEmitter`が貼り付けられたGameObjectのTransformに依存しています。Transformの数値を変化させることで大きさや向きを調整することができます。

![u5.png](https://qiita-image-store.s3.amazonaws.com/0/47146/927b9f69-1fa2-97d8-343d-67001ee63e17.png)

#まとめ

**efkproj作成時、efkprojを配置したディレクトリ以下にTextureディレクトリを作成しそこにテクスチャを配置しないとUnityで再生した際にテクスチャのロードに失敗する**という罠以外はドキュメントの通りに設定していけばOKです。

Unity標準のParticleSystem(Shuriken)が使いにくいので、エフェクト作成はこういった専用のツールで作成した方が楽かなと思います。 (ただしEffekseerは現状Android/iOSでの動作がβ扱いですが)