こんにちは。
まさゆ さんが書きました:ecf5DTTzl6h6lJj02様、返信ありがとうございます。
確かに見落としていました。
今まで作ってきたゲームは、ParallelBgsを使用する場面でマップの設定からのBGS自動演奏をやっていなかったので、そういった仕様を気にする必要がありませんでした。
ただ、依然として納得がいっていないのが、先に報告させてもらった「イベントコマンドで消せる箇所と消せない箇所がありました」の通り、ライン番号 = 1を指定しないでもBGS自動演奏が消せるマップもあることです。
下記のように2つのマップがあり、
・マップA:BGS自動演奏設定あり
・マップB:BGS自動演奏設定あり
1)マップAは、「BGSのフェードアウト」だけでは消音出来ない。
2)マップAは、ライン番号 = 1を指定して「BGSのフェードアウト」すると消音出来た。
3)マップBは、「BGSのフェードアウト」だけで消音出来る。
4)マップBは、ライン番号 = 1を指定して「BGSのフェードアウト」しても消音出来た。
1)、2)、4)は今回仕様を理解したので納得。
でも、3)が納得出来ない。3)の場合は消音出来ないはず。
もう少し自分の制作したイベント処理などをチェックして何か悪さしてないか確認するつもりですが、既に大分ゲーム内容を作り込んでいる状態なので、原因が特定出来ないかもです(現時点で何度も見直しているが分からない・・)。
その場合、2)と4)で処理を統一して、本件クローズしたいと思います。
こちらで色々と確認してみたのですが、
まさゆさんのおっしゃる、
ライン番号を指定しなくても、BGSのフェードアウトでフェードアウトできる場合とそうでない場合がある、
という状況は再現できませんでした…。
ただ、1つ謝らなければいけないのがありまして、
前回の記事で、
マップのBGS自動演奏はライン番号が 1 に固定されていることに注意してください、
と書いたのですが、私の方に、ちょっと認識不足の点があって、
BGS並行演奏プラグインのプラグインコマンドを一切使用していない状況であれば、
イベントコマンドのBGSの演奏や、BGSのフェードアウトを実行するときに、
ライン 1 番に対して実行するようになっている(プレイ開始時に、BGSのライン番号が 1に設定されている )ので、
プラグインコマンドで、ライン番号を指定していなくてもフェードアウトできるのが、
本来の挙動となっているようです。
なので、BGS並行演奏プラグインのプラグインコマンドで、何もしていないのに、
プラグインコマンドでライン番号を 1 に設定していないとフェードアウト等ができない状況の方が異常で、
何らかの他のプラグインとの競合によって、
操作するライン番号が 1 以外に変更されてしまったか、
マップで自動演奏に設定したBGSがライン 1 以外で演奏されてしまっている、
という可能性が高そうです。
イベントコマンドの 『スクリプト』 で、
コード: 全て選択
console.log(`Line Index: ${AudioManager._bgsLineIndex}`);
AudioManager._currentAllBgs.forEach((value, index) => console.log(`Line ${index}:`, value));
と記述すると、
テストプレイ時に、F8 もしくは F12 キーを押すことで表示できる、
DevTools というウィンドウの Console タブの画面に、
現在、操作するライン番号が何番になっているかと、
BGSの何番のラインで、どのファイルが演奏されているかの情報が出力できるので、
BGSのフェードアウトを行う前などに、実行してみて、おかしくなっていないか確認してみてください。
他にBGMだったり、SEだったりの再生の仕様を変更するようなプラグインがある場合には、
そちらとの競合が疑われますが、
こちらではどのようなプラグインの組み合わせになっているか分かりませんので、
競合の確認(プラグインの ON/OFF の変更や、順序の変更による解消の確認等)は、
ご自身で行っていただくしかありません。
ご容赦ください。
以上、確認してみてください。