2017-06-08 12 views
0

サウンドエフェクトはいつ取り除かれるべきですか?Libgdx - サウンドファイルを正しく処分する方法

私は音効果と音楽について少し混乱しています。音楽では、レベルの終了時まで音楽を繰り返すだけで、レベルが終了すると処分され、その音楽はもう使用されなくなります。サウンドエフェクトを使用すると、短い時間再生されるため、再生が完了して新しいサウンドが再生されたときに何が起こるのか分かりません。

たとえば、プレイヤーキャラクターは銃を撃つことができます。したがって、プレーヤーが6回撮影すると、そのサウンドエフェクトは、処分する必要がある6つの別々のサウンドのように処理されるのですか、何回使用されても不要になったときには、

+0

6つの音がどういう意味ですか? 'x1.mp3'、' x2.mp3'、 'x3.mp3' ...のような6つのサウンドファイルの' Sound'ですか? – Aryan

+0

私は6回演奏されている1つのサウンドファイルの例を使用していました。 – ace106

答えて

1

再生するたびに処分する必要はありません。他のゲーム資産を処分するとき(ゲームが処分されているときにGame disposeメソッドから呼び出す)に処分するだけです。

プレーヤーが6回撮影すると、同時に6回再生されます。 javadocから:

音を再生します。すでに再生している場合は、同時に再生されます。

しかし、あなたが処分する必要がある6つの音やそのようなものはありません。

あなたの質問にお答えします:は、何回使用されているかにかかわらず、不要になったときに1回のみ処分するサウンドファイルです。

はい。小さなプロジェクト/ゲームのための

0

  1. あなたはPlayScreenに使用している任意のサウンド、ゲームのcreate()方法で一度作成し、それらを捨てないであなたのゲーム内で使用しています。

    Sound sound = Gdx.audio.newSound(Gdx.files.internal("data/mysound.mp3")); 
    

    あなたがゲームを終了すると、それが呼ばれ、ApplicationListenerdispose()方法で音を廃棄してください。

  2. はスクリーンインタフェースのshow()方法であなたのサウンドを作成し、あなたがその画面のhide()メソッドからメソッドdispose()を呼び出す自分で呼び出す必要があるので、フレームワークによって呼び出されていない画面のdispose()が、画面のdispose()でそれらを配置します。

  3. AssetManagerを使用して、要件に応じてロード、アンロード、およびをApplicationListenerで処分することによってリソースを管理します。ビッグPorjects /ゲームのため

リソースで賢明

あなたは多くのリソースを管理するためにきたので、あなたはAssetManagerを使用する必要があります。

+0

私は自分のAssetManagerを持っている特定の資産クラスを持っており、音、音楽、テクスチャに関するものはすべてあります。ゲームのcreate()にそのクラスの静的オブジェクトを作成し、ゲームが一時停止()を実行すると、私はassetsクラスdispose()を呼び出します。私はホームキーが押され、テクスチャがゲームがリロードされたときに消えてしまったので、pause()が呼び出されたときにテクスチャを処分し、テクスチャがリロードされたときにテクスチャをリロードします。ホーム/リロードからのメモリ使用量はまだ増加していますが、これに関連するのかどうかはわかりません。まだそれに取り組んでいます。 – ace106

+0

メモリ増加の問題は、サウンドエフェクトについてこの質問をしたのは私がそれらを一度だけ処分することであり、私はそれが間違っているかどうか分からず、私の他の問題に寄与することができたからです。 – ace106

+0

@ ace106あなたは一度作成してゲームの最後か最後に処分するなら、あなたは記憶上の問題があるとは思わない。 – Aryan

関連する問題