AudioStreamPlayerc重複生成バグ.zip (1.6 MB)
再現手順:
1.プロジェクトを開き、プロジェクトテスト
に進む
2.Zキーを押してAudioStreamPlayer(削除されないノード)を再生する
3.Xキーを押してAudioStreamPlayer2D(表示されないノード)を再生する
4.左側のシーンからリモートビューでcoresceneのノードを開く
5.Zキーを連続で押すと、AudioStreamPlayerノードが多数生成されるが、削除されない現象が発生する
問題の原因:
1.場所はゲームオブジェクトのvs【ステートマシン】の【アクション】内の【音声再生】
2.AudioStreamPlayer2Dが有効化されていない場合、AudioStreamPlayerが重複生成される

補足:さらに、音声を重複再生した後、キャラクターのインターフェースシーンに戻り、右側のインスペクターでルートノードの
AudioStreamPlayer-bug、AudioStreamPlayer-bug2、AudioStreamPlayer2D-bug3を再生すると、重ね合わせられた重複音が鳴る
AIによる判断:
なぜこのような現象が起こるか
AGMのPlayAudioアクション内部には、2種類の破棄ロジックがハードコードされている:
AudioStreamPlayer2D ブランチ:プラグイン内部でfinishedシグナルが自動的に接続され、音声再生終了後にqueue_free()が呼び出されて一時ノードが削除されるため、シーンツリーに溜まらない。
通常の AudioStreamPlayer ブランチ:プラグインにはfinishedによる自動解放ロジックがバインドされていない。音声再生が完了してもノードはシーンツリーに残ったままになり、音だけが止まる状態になる。弾を切り替えて再生をトリガーするたびに新しいノードが生成され、どんどん積み重なっていくGitHub。
通常の AudioStreamPlayer 自体には
finishedシグナルがあるが、AGMのこのアクションでは通常のバージョンに対して自動破棄が接続されておらず、2Dバージョンに対してのみ解放コードが記述されている。