ゲーム開発の備忘録

趣味のゲーム開発でのノウハウや、技術的に嵌ったポイントを忘れないように書き記しておくブログです。

libGDXでBGMをAssetManagerで管理すると再生が効かなくなる場合がある

libGDXには、ゲームで使用する素材(画像、効果音、BGMなど)を管理してくれる、AssetManagerというクラスが用意されています。
AssetManagerについては以下を参考にしてください。

westplain.sakuraweb.com
qiita.com

非常に便利な機能も有しており、基本的にはこのAssetManagerを利用すればよいです。
ただし、BGMだけはAssetManagerで管理すると問題が発生することがあります。

BGMによっては、AssetManagerで管理されていると、一定回数以上再生された際に、
再生を一切受け付けなくなってしまうことがある
のです。
厄介なことに、事象が発生するようになったBGMを一度unloadしてloadし直しても状況が改善されません。

そこで、BGMだけは自作のHashMapに、Gdx.audio.newMusic()してMusicを管理します。
こうすれば、上記の事象は発生しなくなります。
(本末転倒な気がしますが……)