私は、サウンドをC#XNAゲームにプログラミングするさまざまな方法について読んできました。私は音量コントロールのサウンドインスタンスを使用することに決めましたが、.wavを再生している間は、サウンドエフェクト.Play()を使用してインスタンス)は、それが要求されるべきであれば、自分自身の複数のコピーを再生させます。ですから、私の質問は、ボタンを押し続けると、サウンドファイルの終わりまで待つのではなく、一度に複数回(例えば、マシンガンの無人機など)複数回再生するというシナリオですループする。どのようにインスタンスを使用しますか?私は、欠落しているものがあるか、インスタンスがこの用途のために設計されていないと想定しています。そうであれば、サウンドエフェクトの基本オプションとサウンドエフェクトインスタンスの基本オプションの主な違いは何ですか?前もって感謝します。1つのインスタンスからサウンドを繰り返します。
答えて
SoundEffectInstance
は、サウンド再生の1つのインスタンスです。定義上、一度に複数を再生することはできません。もちろん、あなたは同じものの複数のインスタンスを持つことができますSoundEffect
。実際には、これは基本的にSoundEffect.Play()
と呼ぶときに起きていることです。インスタンスを作成して再生しているということです。
これを念頭に置いて、プレートにはいくつかのオプションがあります。あなたがボタンを押したときに何十億もの音が完全に再生されないようにしたいのであれば、確かにSoundEffect.Play()
を使ってはいけません。発見したように多くのインスタンスが作成されます(これは、とにかく全体的な管理)。それほど頻繁でない音については、大丈夫でしょう。
これは、どのようにしてSoundEffectInstance
を使用できますか?基本的には、最初から再起動することができます。もちろん、SoundEffectInstance
の複数のゲームコンポーネントを1つ(または複数)持つこともできます。このようにして、あなたの銃の1つが再始動し、同じ音の別の銃のインスタンスを混乱させることはありません。また、パフォーマンス上の理由から、サウンドエフェクトごとに1つのインスタンスしか持たないようにすることもできます。私はそれを「シンプル」な方法再起動しようとすると問題がありました
:
instance.Stop();
instance.Play();
歴史的に、これは私のために働いていませんが。それがあなたのためならば、以下を無視してください:
インスタンスごとに自分自身の "再起動"フラグを設定しなければなりませんでした。あなたは)(すべてのSound
ためのフレームごとに更新を呼び出す必要がありますので、どこかでそれらのコレクションを維持するか、それらがそうでなければアクセスできるように、この方法では
//class that represents one sound effect instance PLUS restart flag
public class Sound
{
SoundEffectInstance instance;
bool restart;
public Sound(SoundEffectInstance i)
{
instance = i;
restart = false;
}
public bool PlayingOrRestarting()
{
return State == SoundState.Playing || restart;
}
public void Update()
{
if (restart)
{
instance.Play();
restart = false;
}
}
public void Play()
{
instance.Play();
}
public void Restart()
{
instance.Stop();
restart = true;
}
public void Stop()
{
instance.Stop();
restart = false;
}
public SoundState State
{
get { return instance.State; }
}
public float Volume
{
set { instance.Volume = value; }
get { return instance.Volume; }
}
public bool IsLooped
{
set { instance.IsLooped = value; }
get { return instance.IsLooped; }
}
}
:だから私はそうのように自分自身でSoundEffectInstance
クラスを包みました。
- 1. gsub - すべての繰り返し文字を1つのインスタンスに減らす
- 2. UILocalNotificationサウンドを繰り返す方法
- 3. 配列は1つの値を繰り返します
- 4. SQL:クエリを70000回繰り返し、各繰り返しで1つのフィールドを合計します。
- 5. 2つの背景イメージを繰り返し、繰り返さない1つのイメージをブレンドする方法は?
- 6. XAudio2で同じサウンドを繰り返し再生するには?
- 7. 配列内の1つの非繰り返し要素を探しますか?
- 8. クリック数を1から3までカウントし、繰り返しますか?
- 9. jQuery PHP折り返し折り返しが1つに繰り返される
- 10. 1つのforeach内で2つの図形リストを繰り返します。C#
- 11. テラデータの繰り返し行を1つにマージする
- 12. 1つのSQLクエリで「リンクされたリスト」を繰り返しますか?
- 13. 1つのアプリケーションオブジェクトを開いて繰り返し使用できますか?
- 14. VBA:1つの値をコピーし、一定回数行に貼り付けてから、繰り返します。
- 15. iOSでプログラム全体で繰り返すサウンドを再生する
- 16. AVAudioPlayerは1つのデータを再生してから別のデータを繰り返し再生します。
- 17. スキーム最後の1つを除くリストからすべての繰り返し要素を削除します
- 18. グループ内で繰り返し発生する(1度に1つずつ)列を作成しますか? (R)
- 19. JQueryスライドショーを1回だけ繰り返しますか?
- 20. ベクトルに1つの要素だけを繰り返してプッシュ
- 21. スクリプトを何度も繰り返して繰り返します
- 22. C++は1つの関数を繰り返し呼び出しています
- 23. pythonで1つのサブプロセスを繰り返し使用しています
- 24. 2つのパターンの間にラインを印刷し、1秒間スリープしてからEOFまで繰り返す
- 25. Javaスイング:1つのフレームから他のイベントを聴いたり、繰り返したりする
- 26. AutoHotkey:1つのスクリプト内で複数の繰り返しアクション
- 27. 繰り返しの結果が1つのループ
- 28. どちらが速いですか:スタイルを繰り返すか、セレクタを繰り返しますか?
- 29. Django - フォームフィールドを1つの形式でn回繰り返す
- 30. 複数の繰り返し文字を1つに置き換えます
ありがとう、それは私のクエリを完全にクリアしました。 – GamersIncoming