使い方

サンプルプロジェクト

下記の場所にEffekseerプラグインを使用したサンプルプロジェクトがあります。

リソースファイルについて

1.10から変更になりました。

Resources/Effekseer/ 以下に出力済エフェクト(.efk)やテクスチャ、サウンドを配置します。
*.efkファイルをインポートすると、
.bytesにリネームされます。
上手くいかないときは、Reimportを試してください。

エミッタを使って再生する方法

準備

エフェクトのエミッタコンポーネントをGameObjectにAddすることで、
GameObjectに連動したエフェクトの再生を行うことができます。

Plugin/Effekseer/EffekseerEmitter.csをGameObjectに追加します。

インスペクタのプロパティ

  • Effect Name: エフェクト名を指定します。
    (エフェクト名はエフェクトファイル名(*.efk)から拡張子を除いた文字列です)
  • Play On Start: チェックを入れると、シーン開始時(Start()のタイミング)に自動的に再生します。
  • Loop: 再生終了したら自動的に再生をリクエストします。

特徴

設置するエフェクトやキャラクターに追従するようなエフェクトに適しています。

スクリプトから直接再生する方法

スクリプト

EffekseerSystem.PlayEffect()を使うことで、スクリプトからエフェクトを再生することができます。

以下サンプルコードです。

void Start()
{
    // transformの位置でエフェクトを再生する
    EffekseerHandle handle = EffekseerSystem.PlayEffect("Laser01", transform.position);
    // transformの回転を設定する。
    handle.SetRotation(transform.rotation);
}

特徴

PlayEffect()で再生した場合は自動で位置回転は変わりません。
もし動かしたいときは手動で設定してやる必要があります。

ヒットエフェクトや爆発エフェクトなど、シンプルに使いたいときに適しています。

事前にリソースをロードする

自動でロードされるタイミング

エフェクトに必要なリソースファイルがロードされるのは以下のタイミングです。

  • EffekseerEmitter.Start()
  • EffekseerSystem.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のリリースを行わないでください。