下記の場所にEffekseerプラグインを使用したサンプルプロジェクトがあります。
1.10から変更になりました。
Resources/Effekseer/ 以下に出力済エフェクト(.efk)やテクスチャ、サウンドを配置します。
*.efkファイルをインポートすると、.bytesにリネームされます。
上手くいかないときは、Reimportを試してください。
エフェクトのエミッタコンポーネントをGameObjectにAddすることで、
GameObjectに連動したエフェクトの再生を行うことができます。
Plugin/Effekseer/EffekseerEmitter.csをGameObjectに追加します。
設置するエフェクトやキャラクターに追従するようなエフェクトに適しています。
EffekseerSystem.PlayEffect()を使うことで、スクリプトからエフェクトを再生することができます。
以下サンプルコードです。
void Start()
{
// transformの位置でエフェクトを再生する
EffekseerHandle handle = EffekseerSystem.PlayEffect("Laser01", transform.position);
// transformの回転を設定する。
handle.SetRotation(transform.rotation);
}
PlayEffect()で再生した場合は自動で位置回転は変わりません。
もし動かしたいときは手動で設定してやる必要があります。
ヒットエフェクトや爆発エフェクトなど、シンプルに使いたいときに適しています。
エフェクトに必要なリソースファイルがロードされるのは以下のタイミングです。
いずれも指定されたエフェクトのリソースのみがロードされます。
ロードされたエフェクトは保持され、次回の再生タイミングではロードされません。
自動ロードはお手軽ですが、ロードするタイミングによってはゲームがフレーム落ちする可能性があります。
事前にLoadEffect()することで、ロードの負荷でフレーム落ちすることを防ぐことができます。
void Start()
{
// エフェクト"Laser01"をロードする。
EffekseerSystem.LoadEffect("Laser01");
}
ロードされたエフェクトはEffekseerSystemのDestroy時に自動解放されますが、
不要になったエフェクトをReleaseEffect()で明示的に解放することもできます。
void OnDestroy()
{
// エフェクト"Laser01"を解放する
EffekseerSystem.ReleaseEffect("Laser01");
}
アセットバンドルからエフェクトリソースをロードすることができます。
なお、アセットバンドルを使う場合は自動ロードすることはできません。
IEnumerator Load() {
string url = "file:///" + Application.streamingAssetsPath + "/effects";
WWW www = new WWW(url);
yield return www;
var assetBundle = www.assetBundle;
EffekseerSystem.LoadEffect("Laser01", assetBundle);
}
通常のロードと同じようにReleaseEffect()してください。
全てのエフェクトのリリースが終わる前にAssetBundleのリリースを行わないでください。