GameSynth備忘録②
Unity書き出しの部分で色々と分かったことがあるので書きます。今後のGameSyntherのために。
書き出しの際のパス指定
まずAssetの場所を指定してといわれる。
ここでAssetのディレクトリを指定するとAsset下にResourcesファイルがあるかどうかを見てくれる。なかったら作成し、そしてそこに突っ込む。
子の仕様は少し曲者で、Resource下に階層を設けている場合に例えばAsset/Resources/SEとしてある場合は、SEを指定できない。SEを指定するとSEのしたにResourcesがつくられ、その中に突っ込まれてしまう。
そしてC#スクリプトは同時にこのパスを伝えられるため、Audioファイル生成後、ディレクトリを変更した場合、スクリプトも変更が必要になる。
PlaySFX関数について
前記事のようにanimationにイベントしてPlaySFXを呼ぶことが出来るのだが、オブジェクトに別のサウンドを用意するとき、同じ名前の関数を複数用意しても使えないのでこの部分も手で修正する必要があるので留意されたし。
ソースファイルを複数自動生成しない場合について
この場合、処理が終わらず、無限ループに入るようだ(Shuffleだけ?)。検証は面倒なのでしていないが、おそらく1データでは最初と最後がつながっているのではないか。
switch (playingMode)
{
case PlayingMode.Sequential:
lastIndex++;
if (lastIndex == audioClips.Length)
lastIndex = 0;
break;
case PlayingMode.Shuffle:
int newIndex = lastIndex;
while (lastIndex == (newIndex = Random.Range(0, audioClips.Length))) { }
lastIndex = newIndex;
break;
case PlayingMode.FullRandom:
lastIndex = Random.Range(0, audioClips.Length);
break;
}
私の理解が及んでいないだけかもしれないが。エラーで困った方の助けになればよい。