XNA/XACT を使用して、別のサウンドが終了したときにすぐにサウンドを再生するにはどうすればよいですか?
質問
この質問は、オーディオ デザイナーとプログラマーの世界の境界にあります。この質問は部分的にはオーディオ デザイナーの専門分野で答える必要があるかもしれませんが、プログラマーにとっては確かに問題です。私たちのプロジェクトでは、ゲーム タイマーが残り 1 分を超えている間、サウンド (BGM) をループさせたいと考えています。この時間が来たら、作成どおりに音楽を停止したいのですが、 そしてすぐに終了セグメントに進みます. 。XACT について調べてみると、さまざまなイベントがサポートされているようです。残念ながらドキュメントが不足しており、このアプリケーションはプログラマである私にとっては少々異質なものです。
私がやろうとしているのは、次のようなことです(さまざまなアプローチ)。
- 音楽が止まったら、イベントを結び付けてすぐに別のサウンドを再生したい
- 音楽でマーカーがトリガーされたら、すぐに別のサウンドを演奏したい
- また、これらのイベントがいつ発生するかをアプリケーション内で知りたいと思っています
問題は、別のサウンドが始まったときにサウンドを自動再生するメカニズムが見つからないことと、XACT プロジェクトで作成されたイベントを C# に接続する方法が見つからないことです。
これができない場合(つまり、XACT/XNA はこれらの操作をサポートしていません)、クロスサウンド時間エラーを最小限に抑えてこの問題を解決する方法についてアイデアを集めてください。XNA への呼び出しを使用して、C# でこれをできる限り制御できることが望ましいと思います。
解決
今は解決したと思います
私がやった方法は次のとおりです。
- を選択 合図 停止後の音を変えたいとき XACT.
- セット プレイリストの種類 に 相互の作用.
- オープンキュー トランジション.
- 選択する 目的地別に見る.
- を選択 合図 の中に (停止) ノードがツリー ビューに表示されます。
- で 遷移プロパティ ツリービューの右側にある、 送信元と宛先:
- セット ソース に ループの終わり.
- セット 目的地 に 始まり.
- で 遷移プロパティ ツリービューの右側にある、 トランジション:
- セット 遷移タイプ に 直接同時移行.
- セット トランジショナルサウンド に 鳴らしたい音 ループサウンドがループを完了した後。
ウィンドウを閉じて、キューを再生してテストします。停止するテストも行います 著者どおり 行動が期待に応えているかどうかを確認します。
実装
コードでは、 停止 キュー 著者どおり この動作を取得するには。 すぐに サウンドアウトロを再生せずにキューを停止します。これが、将来この問題に遭遇する可能性のある他の人々に役立つことを願っています。質問と回答は、最初に思ったほどコード指向ではありませんでした。また、これは XNA 2.0 にも当てはまります。XNA 3.0 以降でこの種の動作を制御するための他のオプションがあるかどうかはわかりません。