0

作成しているゲームに複数のオブジェクトがあり、同じサウンドを2回以上再生せずにサウンドを再生する方法を理解するのに大きな問題があります。サウンドを50回大音量で再生するのではなく、インスタンスをいくつ作成してバランスをとっても、サウンドを1回だけ再生するためのコツやヒントがあるかどうか疑問に思います。

XNA.Framework.Audio.SoundEffectInstanceを使用してサウンドを再生しています。

4

3 に答える 3

1

これは、プログラミングの問題というよりは、混合の問題です。サンプルを2回再生すると、常により完全な効果が得られます。

プログラムの観点からは、サウンドが同時に2回再生されないようにすることができます。これを実現するには、サウンドが再生されるたびにブール値を設定します。サウンドを再生する前に、ブール値がfalseであることを確認するか、イベントをキャンセルしてください。サウンドが再生されたら、ブール値をfalseに設定します。

于 2012-09-17T01:02:32.327 に答える
1

これはかなり一般的な答えですが、さまざまなサウンドクラス(たとえば、射撃音、動く音、環境音)を作成できる場合があります。

サウンドを再生するときは、各クラスの他のすべてのサウンドをミュートしながら、各クラスの現在のサウンドを再生できます。

たとえば、すべてのガンショットについて、各ショット間の時間がサウンドの再生にかかる時間よりも短い場合があります。新しい銃声ごとに、射撃音のプール内の他のすべての音をミュートします。

これを行うには、射撃音オブジェクトを射撃音配列に追加し、ゲームフレームごとに、新しい音がないことを確認します。新しいサウンドがある場合は、新しいサウンドを再生する前に、サウンドの配列を繰り返し処理してすべてをミュートします。

次に、複数の音の配列(歩行/環境)を作成して、射撃音が歩行音/環境音を切り取らないようにすることができます。

于 2012-09-17T01:03:26.370 に答える
1

インスタンスクラスでは、ブール値である静的変数を作成できます。

インスタンスが音を出すときは、最初に静的変数をチェックしてもらいます。変数がtrueの場合、サウンドを再生しないでください。falseの場合は、サウンドを再生します。

サウンドの再生が完了したら、静的変数をfalseに変更して、次のインスタンスがサウンドを再生できるようにします。

例:

public static bool is_playing = false;
于 2012-09-18T21:27:04.040 に答える