「MonoGameでBGMを再生する」を編集中
ナビゲーションに移動
検索に移動
この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 | 編集中の文章 | ||
1行目: | 1行目: | ||
==問題点:Songクラスが不安定== | ==問題点:Songクラスが不安定== | ||
− | 2016年1月時点の[[MonoGame]] | + | 2016年1月時点の[[MonoGame]]でBGMを再生するのは色々と難しいようだ。 |
* [[MonoMac]]では「Content.Load<Song>メソッド」でクラッシュする。 | * [[MonoMac]]では「Content.Load<Song>メソッド」でクラッシュする。 | ||
16行目: | 16行目: | ||
[[ググって]]みた結果、以下の[[コード]]で動くような気がするが、[[stackoverflow.com]]によると内部実装に色々と問題があるのでSongクラスは使うなとのこと<ref>http://stackoverflow.com/questions/19411922/song-doesnt-play-all-the-time-in-monogame</ref>。 | [[ググって]]みた結果、以下の[[コード]]で動くような気がするが、[[stackoverflow.com]]によると内部実装に色々と問題があるのでSongクラスは使うなとのこと<ref>http://stackoverflow.com/questions/19411922/song-doesnt-play-all-the-time-in-monogame</ref>。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
− | var song = Content.Load<Song>("heaven_BGM_tougou"); | + | var song = Content.Load<Song>("heaven_BGM_tougou"); |
− | MediaPlayer.IsRepeating = true; | + | MediaPlayer.IsRepeating = true; |
− | MediaPlayer.Play(song); | + | MediaPlayer.Play(song); |
</source> | </source> | ||
24行目: | 24行目: | ||
stackoverflow.comの指示に従い、BGM用のSongクラスとMediaPlayerクラスではなく、効果音用のSoundEffectクラスを使うことでクラッシュ自体は避けられることを確認した。 | stackoverflow.comの指示に従い、BGM用のSongクラスとMediaPlayerクラスではなく、効果音用のSoundEffectクラスを使うことでクラッシュ自体は避けられることを確認した。 | ||
<source lang="csharp"> | <source lang="csharp"> | ||
− | var song = Content.Load<SoundEffect>("heaven_BGM_tougou"); | + | var song = Content.Load<SoundEffect>("heaven_BGM_tougou"); |
− | var backSong = song.CreateInstance(); | + | var backSong = song.CreateInstance(); |
− | backSong.IsLooped = true; | + | backSong.IsLooped = true; |
− | backSong.Play(); | + | backSong.Play(); |
</source> | </source> | ||
33行目: | 33行目: | ||
ただしSoundEffectクラスを使う方法ではMonoGame Pipelineで生成されるxnbファイルがアホみたいに巨大になる。約3MBのmp3ファイルが約30MBのxnbファイルになるくらい。MonoGame PipelineでQualityプロパティをBestからLowに変えてもファイルサイズに変化はない。 | ただしSoundEffectクラスを使う方法ではMonoGame Pipelineで生成されるxnbファイルがアホみたいに巨大になる。約3MBのmp3ファイルが約30MBのxnbファイルになるくらい。MonoGame PipelineでQualityプロパティをBestからLowに変えてもファイルサイズに変化はない。 | ||
− | + | ===回避策:音質を落としたwavを使う=== | |
ファイルがデカイ理由はMonoGame Pipelineにmp3を食わせると最高音質でwavに変換しているためのようだ。 | ファイルがデカイ理由はMonoGame Pipelineにmp3を食わせると最高音質でwavに変換しているためのようだ。 | ||
40行目: | 40行目: | ||
事前に音質を落としたwavファイルをMonoGame Pipelineに食わせると良いようだ。 | 事前に音質を落としたwavファイルをMonoGame Pipelineに食わせると良いようだ。 | ||
− | == | + | ==関連項目== |
− | + | * [[Xamarin.Android/画面の向きを固定する]] | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ==参考文献== | |
− | + | {{reflist}} | |
− | + | {{stub}} | |
− | |||
+ | [[category:MonoMac]] | ||
[[category:Xamarin.Android]] | [[category:Xamarin.Android]] | ||
[[category:MonoGame]] | [[category:MonoGame]] |