1

この質問は、オーディオ デザイナーとプログラマーの世界の境界です。この質問は、オーディオ デザイナーのその分野によって部分的に答えられる必要があるかもしれませんが、プログラマーにとっては確かに問題です。私たちのプロジェクトでは、ゲーム タイマーが残り 1 分を超えている間、サウンド (バックグラウンド ミュージック) をループさせたいと考えています。この時間になったら、作成した音楽を停止し、すぐに終了セグメントに進みます。XACT について調べてみたところ、さまざまなイベントがサポートされているようです。残念ながら、ドキュメントが不足しており、このアプリケーションはプログラマーである私にとっては少しなじみがありません。

私がやろうとしているのは、これらの線に沿ったものです(さまざまなアプローチ):

  1. 音楽が止まったらすぐに別の音を鳴らすイベントを結びたい
  2. 音楽でマーカーがトリガーされたときに、すぐに別のサウンドを再生したい
  3. また、これらのイベントのいくつかがいつ発生するかをアプリケーションで知りたいです

問題は、別のサウンドが開始されたときにサウンドを自動再生するメカニズムを見つけることができなかったことと、XACT プロジェクトで作成されたイベントを C# に接続する方法を見つけられなかったことです。

これができない場合 (つまり、XACT/XNA がこれらの操作をサポートしていない場合)、クロス サウンド時間エラーを最小限に抑えてこの問題を解決する方法についてアイデアを集めてください。できれば、XNA の呼び出しを使用して、C# でこれを可能な限り制御できるようにします。

4

1 に答える 1

4

今は解決したと思います

これが私がやった方法です。

  1. XACTで停止した後にサウンドを変更するキューを選択します。
  2. Playlist TypeInteractiveに設定します。
  3. キュートランジションを開きます。
  4. [宛先別に表示] を選択します。
  5. ツリー ビューに表示されている(停止)ノードでキューを選択します。
  6. ツリー ビューの右側にある [遷移のプロパティ] で、[ソース]と [宛先]について:
    1. SourceEnd of Loopに設定します。
    2. DestintionBeginningに設定します。
  7. ツリー ビューの右側にある [トランジション プロパティ] で、[トランジション]について:
    1. 遷移タイプDirect Concurrent Transitionに設定します。
    2. トランジショナル サウンドは、ループ サウンドがループを完了した後に再生するサウンドに設定します。

ウィンドウを閉じて、キューを再生してテストします。また、動作が期待どおりかどうかを確認するために、 As Authoredを停止するテストを行います。


実装

コードでは、Cue As Authoredを停止して、この動作を取得します。サウンド アウトロを再生せずにキューを即座に停止します。これが、将来この問題に遭遇する可能性のある他の人々に役立つことを願っています。質問と回答は、最初に思ったほどコード指向ではありませんでした。また、これは XNA 2.0 にも当てはまります。XNA 3.0+ でこの種の動作を制御するための他のオプションがあるかどうかはわかりません。

于 2008-09-22T12:08:35.967 に答える