【バグ】アクション再生後のAudioStreamPlayerノードがクリアされない

AudioStreamPlayerc重複生成バグ.zip (1.6 MB)

再現手順:

1.プロジェクトを開き、プロジェクトテスト:backhand_index_pointing_up:に進む

2.Zキーを押してAudioStreamPlayer(削除されないノード)を再生する

3.Xキーを押してAudioStreamPlayer2D(表示されないノード)を再生する

4.左側のシーンからリモートビューでcoresceneのノードを開く

5.Zキーを連続で押すと、AudioStreamPlayerノードが多数生成されるが、削除されない現象が発生する

問題の原因:
1.場所はゲームオブジェクトのvs【ステートマシン】の【アクション】内の【音声再生】

2.AudioStreamPlayer2Dが有効化されていない場合、AudioStreamPlayerが重複生成される

1787303104453 (1)

補足:さらに、音声を重複再生した後、キャラクターのインターフェースシーンに戻り、右側のインスペクターでルートノードの

AudioStreamPlayer-bug、AudioStreamPlayer-bug2、AudioStreamPlayer2D-bug3を再生すると、重ね合わせられた重複音が鳴る

AIによる判断:

なぜこのような現象が起こるか

AGMのPlayAudioアクション内部には、2種類の破棄ロジックがハードコードされている:

  1. :white_check_mark: AudioStreamPlayer2D ブランチ:プラグイン内部でfinishedシグナルが自動的に接続され、音声再生終了後にqueue_free()が呼び出されて一時ノードが削除されるため、シーンツリーに溜まらない。
  2. :cross_mark: 通常の AudioStreamPlayer ブランチ:プラグインにはfinishedによる自動解放ロジックがバインドされていない。音声再生が完了してもノードはシーンツリーに残ったままになり、音だけが止まる状態になる。弾を切り替えて再生をトリガーするたびに新しいノードが生成され、どんどん積み重なっていくGitHub。

通常の AudioStreamPlayer 自体にはfinishedシグナルがあるが、AGMのこのアクションでは通常のバージョンに対して自動破棄が接続されておらず、2Dバージョンに対してのみ解放コードが記述されている。

  1. さらに、F5キーでゲームをリセットすると、左側のリモートノードも存在していることがわかりました。
  2. セーブやロードの後にも、オーディオノードが存在する可能性があります。
  3. ポータルを使ってシーン切り替えを行った後も、オーディオが残り続けることがあります。

おそらく

https://guild.rpgmakerofficial.com/t/topic/1152

【BUG】「ロード実行」後、ロード回数が増えるほど音が大きくなる / 複数のセーブノード下でセーブ失敗がランダムに発生する現象

の問題がここにあります。